在C#中设置按钮悬停图标的更简单方法

时间:2015-06-04 23:21:06

标签: c#

当我制作很多按钮时,这是最好的方法,还是有更好的方法?这段代码感觉有点笨拙。

Button button = new Button();
button.MouseEnter += Button_MouseEnter;
button.MouseLeave += Button_MouseLeave;
Button button2 = new Button();
button2.MouseEnter += Button2_MouseEnter;
button2.MouseLeave += Button2_MouseLeave;

void Button_MouseEnter(object sender, EventArgs e)
{
    BackgroundImage = Image.FromFile("buttonHover");
}

void Button_MouseLeave(object sender, EventArgs e)
{
    BackgroundImage = Image.FromFile("button");
}
void Button2_MouseEnter(object sender, EventArgs e)
{
    BackgroundImage = Image.FromFile("button2Hover");
}

void Button2_MouseLeave(object sender, EventArgs e)
{
    BackgroundImage = Image.FromFile("button2");
}

1 个答案:

答案 0 :(得分:2)

我认为没有更好的方法。我会创建一个带有属性的自定义控件" button"和" buttonHover"。

像这样(尚未测试):

public class MyBytton : Button
{
    public Image MainImage { get; set; }
    public Image HoverImage { get; set; }

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

    protected override void  OnMouseLeave(EventArgs e)
    {
        if (MainImage != null)
        {
            this.BackgroundImage = MainImage;
        }
        base.OnMouseLeave(e);
    }
}

使用:

        MyBytton my = new MyBytton();
        my.Location = new Point(10, 10); ;
        my.Name = "button1";
        my.Size = new System.Drawing.Size(141, 61);
        my.TabIndex = 0;
        my.Text = "test";
        my.UseVisualStyleBackColor = true;
        my.BackgroundImage = Image.FromFile("img1.jpg"); 
        my.MainImage = Image.FromFile("img1.jpg");
        my.HoverImage = Image.FromFile("img2.jpg");