向一组WinForms控件

时间:2015-11-04 15:56:28

标签: c# winforms button

我有一个带有6个按钮的表单。这些按钮用于增加/减少相应文本框的值。现在我正试图“动画”按钮。我想在鼠标悬停在按钮上时对按钮产生另一种效果。

My form

要做到这一点,我在参考资料中有两个不同的图像,我正在执行此代码:

private void btnHoursDown_MouseHover(object sender, EventArgs e) {
    btnHoursDown.Image = Game_Helper.Properties.Resources.DownHover;
}

private void btnHoursDown_MouseLeave(object sender, EventArgs e) {
    btnHoursDown.Image = Game_Helper.Properties.Resources.Down;
}

这很好用。我的问题是:创建一个类(ButtonBehaviour.cs)并将此代码放在该类中是不明智的吗?

所以我会有这样的事情:

ButtonBehaviour buttonBehaviour = new ButtonBehaviour();
private void btnHoursDown_MouseHover(object sender, EventArgs e) {
    buttonBehaviour.buttonDownHover();
}

private void btnHoursDown_MouseLeave(object sender, EventArgs e) {
    buttonBehaviour.buttonDownLeave();
}

课程应该是:

public class ButtonBehaviour {
    public void buttonDownHover() {
       // code
    }

    public void buttonDownLeave() {
       // code
    }
}

如何创建此类行为并使按钮适应此行为?

1 个答案:

答案 0 :(得分:2)

如果应对所有按钮应用一个效果,请尝试向它们添加相同的事件处理程序

private void btn_MouseHover(object sender, EventArgs e)
{
    (sender as Button).Image = Game_Helper.Properties.Resources.DownHover;
}

private void btn_MouseLeave(object sender, EventArgs e)
{
    (sender as Button).Image = Game_Helper.Properties.Resources.Down;
}
通过sender变量

可以获得引发事件的

按钮 这样就可以避免每个按钮的代码重复。创建ButtonBehaviourCustomButton可能是一种过度工程,除非您需要多种形式