向一组WinForms控件添加类似的行为

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

我的表格

为此,我在参考资料中有两个不同的图像,我正在执行此代码:

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 } } 

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

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

 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可能是一种过度工程,除非您需要多种forms