C#中自定義PictureBox控件

Windows Form中的PictureBox有一個缺點,就是當圖形加載時,也就是屬性Image改變時,沒有事件觸發。下面是對這控件的擴展。增加了Image屬性改變前後的事件。

附件是運行效果。

 

  1. public class PictureBoxEx : PictureBox  
  2. {  
  3.     #region 屬性  
  4.  
  5.     //新的Image屬性  
  6.     public new Image Image  
  7.     {  
  8.         get { return base.Image; }  
  9.         set 
  10.         {  
  11.             ImageChangingEventArgs e = new ImageChangingEventArgs(value);  
  12.             OnImageChanging(e);  
  13.             if (!e.Cancel)  
  14.             {  
  15.                 base.Image = value;  
  16.                 OnImageChanged(new ImageChangedEventArgs(base.Image));  
  17.             }  
  18.         }  
  19.     }  
  20.     #endregion  
  21.  
  22.     #region 自定義事件  
  23.     //自定義 ImageChanging與ImageChanged事件  
  24.  
  25.     [Category("屬性已更改"), Description("當控件上的 Image 屬性值更改後引發的事件。")]  
  26.     public event EventHandler<ImageChangedEventArgs> ImageChanged;  
  27.  
  28.     protected virtual void OnImageChanged(ImageChangedEventArgs e)  
  29.     {  
  30.         if (ImageChanged != null)  
  31.             ImageChanged(this, e);  
  32.     }  
  33.  
  34.     public delegate void CancelEventHandler(object sender, ImageChangingEventArgs e);  
  35.     [Category("屬性已更改"), Description("當控件上的 Image 屬性值更改前引發的事件。")]  
  36.     public event CancelEventHandler ImageChanging;  
  37.  
  38.     protected virtual void OnImageChanging(ImageChangingEventArgs e)  
  39.     {  
  40.         if (ImageChanging != null)  
  41.             ImageChanging(this, e);  
  42.     }  
  43.     #endregion  
  44. }  
  45.  
  46. #region 事件類  
  47. public class ImageChangedEventArgs : EventArgs  
  48. {  
  49.     public Image Image  
  50.     {  
  51.         get { return _Image; }  
  52.     }  
  53.     private readonly Image _Image;  
  54.  
  55.     public ImageChangedEventArgs(Image image)  
  56.     {  
  57.         this._Image = image;  
  58.     }  
  59. }  
  60.  
  61. public class ImageChangingEventArgs : CancelEventArgs  
  62. {  
  63.     public Image Image  
  64.     {  
  65.         get { return _Image; }  
  66.     }  
  67.     private readonly Image _Image;  
  68.  
  69.     public ImageChangingEventArgs(Image image)  
  70.     {  
  71.         this._Image = image;  
  72.     }  
  73. }  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章