2012-08-07 101 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。

您还可以检查使用了哪个鼠标按钮。也许你只想让图片随左键点击而改变,而不是右或中。

但是这应该让你开始。