目前正在创建一个简单的(我认为很简单的)视觉钢琴项目,该项目可以通过点击屏幕上的按钮和使用键盘进行操作。
我想在屏幕上有一个视觉信号,根据我在键盘上按下的键显示我演奏了什么音符。我想通过更改背景颜色属性来实现这一点。我正在努力避免必须复制和粘贴
btnC.BackColor = Color.White;
btnD.BackColor = Color.White;
btnE.BackColor = Color.White;
等等。在每个keydown函数中。
任何提示或建议都将不胜感激。提前谢谢。
为什么不将它们分组到一个数组中并对其进行迭代?
var buttons = new Button[] { btnC, btnD, btnE ,... };
foreach(var button in buttons)
button.BackColor = Color.White;
或者使用Form
对象查询所有子控件,并检查它是否是Button
的实例。(只有当您将它们隔离在容器中或GUI中没有其他按钮时才有效)
更多的信息可能会有所帮助,但我的第一个想法是编写自己的通用事件处理程序,可以用于每个按钮,然后将其附加到最有用的事件,可能是Click事件。
private void fooEvent (object sender, EventArgs e)
{
// You can cast the sender as Textbox
// and do whatever you need to with it
if (((Textbox)sender).BackColor == Color.Black)
((Textbox)sender).BackColor = Color.White;
else
((Textbox)sender).BackColor = Color.Black;
}
像这样附加:
textboxfoo.Click += new System.EventHandler(fooEvent);