Windows Form中的PictureBox有一个缺点,就是当图形加载时,也就是属性Image改变时,没有事件触发。下面是对这控件的扩展。增加了Image属性改变前后的事件。
附件是运行效果。
- public class PictureBoxEx : PictureBox
- {
- #region 属性
- //新的Image属性
- public new Image Image
- {
- get { return base.Image; }
- set
- {
- ImageChangingEventArgs e = new ImageChangingEventArgs(value);
- OnImageChanging(e);
- if (!e.Cancel)
- {
- base.Image = value;
- OnImageChanged(new ImageChangedEventArgs(base.Image));
- }
- }
- }
- #endregion
- #region 自定义事件
- //自定义 ImageChanging与ImageChanged事件
- [Category("属性已更改"), Description("当控件上的 Image 属性值更改后引发的事件。")]
- public event EventHandler<ImageChangedEventArgs> ImageChanged;
- protected virtual void OnImageChanged(ImageChangedEventArgs e)
- {
- if (ImageChanged != null)
- ImageChanged(this, e);
- }
- public delegate void CancelEventHandler(object sender, ImageChangingEventArgs e);
- [Category("属性已更改"), Description("当控件上的 Image 属性值更改前引发的事件。")]
- public event CancelEventHandler ImageChanging;
- protected virtual void OnImageChanging(ImageChangingEventArgs e)
- {
- if (ImageChanging != null)
- ImageChanging(this, e);
- }
- #endregion
- }
- #region 事件类
- public class ImageChangedEventArgs : EventArgs
- {
- public Image Image
- {
- get { return _Image; }
- }
- private readonly Image _Image;
- public ImageChangedEventArgs(Image p_w_picpath)
- {
- this._Image = p_w_picpath;
- }
- }
- public class ImageChangingEventArgs : CancelEventArgs
- {
- public Image Image
- {
- get { return _Image; }
- }
- private readonly Image _Image;
- public ImageChangingEventArgs(Image p_w_picpath)
- {
- this._Image = p_w_picpath;
- }
- }
转载于:https://blog.51cto.com/isgod/741057