2012-08-07 149 views
0

我有一個「開始」按鈕和我製作的自定義圖像。我沒有搞砸C#.net的這部分內容,但我對VB.NET有一些瞭解。picturebox上的鼠標事件?

我見過有人有類似public void picturebox_MouseDown()和什麼都沒有,但似乎沒有工作。我正在嘗試在給出鼠標事件時更改圖像。

MouseDown將改變圖像StartButtonDown

MouseUp將改變圖像StartButtonUp

MouseEnter將改變圖像StartButtonHover

MouseLeave將改變圖像StartButtonUp

有我應該做的具體事情,我已經谷歌了一個小時左右,仍然沒有找到任何東西幫我。

回答

0

這是我寫的東西,它與您所需要的非常相似。

using System; 
using System.Drawing; 
using System.Windows.Forms; 

public partial class ImageButton : PictureBox 
{ 
    private Image _upImage, _downImage, _hoverImage; 

    [System.ComponentModel.Browsable(true), 
    System.ComponentModel.Category("Images")] 
    public Image UpImage 
    { 
     get { return _upImage; } 
     set 
     { 
      if (value != null) 
      { 
       _upImage = value; 
       this.Image = _upImage; 
      } 
     } 
    } 

    [System.ComponentModel.Browsable(true), 
    System.ComponentModel.Category("Images")] 
    public Image DownImage 
    { 
     get { return _downImage; } 
     set 
     { 
      if (value != null) 
      { 
       _downImage = value; 
      } 
     } 
    } 

    [System.ComponentModel.Browsable(true), 
    System.ComponentModel.Category("Images")] 
    public Image HoverImage 
    { 
     get { return _hoverImage; } 
     set 
     { 
      if (value != null) 
      { 
       _hoverImage = value; 
      } 
     } 
    } 

    public ImageButton() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnMouseDown(MouseEventArgs e) 
    { 
     if (DownImage != null) 
      this.Image = DownImage; 

     base.OnMouseDown(e); 
    } 

    protected override void OnMouseUp(MouseEventArgs e) 
    { 
     if (UpImage != null) 
      this.Image = UpImage; 

     base.OnMouseUp(e); 
    } 

    protected override void OnMouseEnter(EventArgs e) 
    { 
     if (HoverImage != null) 
      this.Image = HoverImage; 

     base.OnMouseEnter(e); 
    } 

    protected override void OnMouseLeave(EventArgs e) 
    { 
     if (UpImage != null) 
      this.Image = UpImage; 

     base.OnMouseLeave(e); 
    } 

} 

我所做的是從標準PictureBox inherrited作出ImageButton。我有Image的三個屬性用於在沒有鼠標動作(UpImage)的情況下顯示,Image在MouseDown事件觸發時顯示(DownImage),而Image在鼠標懸停在控件(HoverImage)上時顯示。

請注意,您應該爲MouseUp和MouseLeave事件添加檢查。如果我單擊圖像並將鼠標從控件上拖走,控件將從UpImage再次轉到DownImage再次轉到UpImage,因爲即使我的鼠標仍然關閉,我仍然離開了控件(MouseLeave)。當鼠標離開控件時,您可能希望DownImage保持顯示。此外,發生MouseUp事件時,您應該檢查鼠標是否仍然懸停在控件上。如果是,您將希望顯示HoverImage而不是UpImage。

您還可以檢查使用了哪個鼠標按鈕。也許你只想讓圖片隨左鍵點擊而改變,而不是右或中。

但是這應該讓你開始。