How to change button background image on mouseOver?

前端 未结 4 1265
星月不相逢
星月不相逢 2020-12-19 16:04

I have img1, and img2 in my resources. I have easily set btn.backgroundImage as img1 in btn properties. Images paths are: c:\\Project\\Resources...

Now I don\'t know

4条回答
  •  暖寄归人
    2020-12-19 16:22

    You can create a class based on a Button with specific images for MouseHover and MouseDown like this:

    public class AdvancedImageButton : Button {

    public Image HoverImage { get; set; }
    public Image PlainImage { get; set; }
    public Image PressedImage { get; set; }
    
    protected override void OnMouseEnter(System.EventArgs e)
    {
      base.OnMouseEnter(e);
      if (HoverImage == null) return;
      if (PlainImage == null) PlainImage = base.Image;
      base.Image = HoverImage;
    }
    
    protected override void OnMouseLeave(System.EventArgs e)
    {
      base.OnMouseLeave(e);
      if (HoverImage == null) return;
      base.Image = PlainImage;
    }
    
    protected override void OnMouseDown(MouseEventArgs e)
    {
      base.OnMouseDown(e);
      if (PressedImage == null) return;
      if (PlainImage == null) PlainImage = base.Image;
      base.Image = PressedImage;
    }
    

    }

    This solution has a small drawback that I am sure can be fixed: when you need for some reason change the Image property, you will also have to change the PlainImage property also.

提交回复
热议问题