using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; namespace ProgressODoom { /// [ToolboxBitmapAttribute(typeof(ProgressODoom.StyledBorderPainter), "Icons.StyledBorderPainter.ico")] public class StyledBorderPainter : Component, IProgressBorderPainter, IDisposable { private Border3DStyle border; private EventHandler onPropertiesChanged; /// public event EventHandler PropertiesChanged { add { if (onPropertiesChanged != null) { foreach (Delegate d in onPropertiesChanged.GetInvocationList()) { if (object.ReferenceEquals(d, value)) { return; } } } onPropertiesChanged = (EventHandler)Delegate.Combine(onPropertiesChanged, value); } remove { onPropertiesChanged = (EventHandler)Delegate.Remove(onPropertiesChanged, value); } } private void FireChange() { if (onPropertiesChanged != null) { onPropertiesChanged(this, EventArgs.Empty); } } /// public StyledBorderPainter() { border = Border3DStyle.Raised; } /// [Category("Appearance"), Description("Gets or sets the border style"), Browsable(true)] public Border3DStyle Border3D { get { return border; } set { border = value; FireChange(); } } /// [Browsable(false)] public int BorderWidth { get { return 2; } } /// /// /// public void PaintBorder(Rectangle box, Graphics g) { Rectangle brd = new Rectangle(box.X, box.Y, box.Width, box.Height + 1); ControlPaint.DrawBorder3D(g, brd, border); } /// public void Resize(Rectangle box) { } /// protected override void Dispose(bool disposing) { base.Dispose(disposing); } } }