Visual C#钢琴项目

时间:2016-01-12 17:26:45

标签: c# piano

目前正在创建一个简单的(我认为很简单的)可视钢琴项目,可以通过单击屏幕上的按钮和使用键盘来操作。

我想在屏幕上显示一个视觉信号,根据我在键盘上按下的键,显示我播放的音符。我想通过改变backcolor属性来做到这一点。我试图避免复制和粘贴

 btnC.BackColor = Color.White;
 btnD.BackColor = Color.White;
 btnE.BackColor = Color.White;

等。在每个keydown功能。

非常感谢任何提示或建议。提前谢谢。

2 个答案:

答案 0 :(得分:0)

为什么不将它们分组到一个数组中并迭代它们?

var buttons = new Button[] { btnC, btnD, btnE ,... };
foreach(var button in buttons)
   button.BackColor = Color.White;

Alternativley使用您的Form对象查询所有子控件并检查它是否是Button的实例。 (仅当您将它们隔离在容器中或GUI中没有其他按钮时才有效)

答案 1 :(得分:0)

更多的信息可能会有所帮助,但我的第一个想法是编写自己的通用事件处理程序,可以用于每个按钮,然后将它附加到最有用的事件,可能是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);