Visual C# Piano Project
В настоящее время в процессе создания простого (то, что я считал простым) проекта визуального пианино, которым можно управлять, нажимая кнопки на экране и используя клавиатуру.
Мне бы хотелось, чтобы на экране был визуальный сигнал, показывающий, какую ноту я сыграл, в зависимости от того, какую клавишу я нажал на клавиатуре. Я хотел бы сделать это, изменив свойство backcolor. Я пытаюсь избежать необходимости копировать и вставлять
btnC.BackColor = Color.White;
btnD.BackColor = Color.White;
btnE.BackColor = Color.White;
и т.д. в каждой функции нажатия клавиш.
Любые советы или предложения с благодарностью. Заранее спасибо.
2 ответа
Почему бы не сгруппировать их в массив и итерировать по ним?
var buttons = new Button[] { btnC, btnD, btnE ,... };
foreach(var button in buttons)
button.BackColor = Color.White;
Альтернативы используй Form
Объект для запроса всех дочерних элементов управления и проверить, является ли он экземпляром Button
, (Работает, только если они изолированы в контейнере или нет других кнопок в графическом интерфейсе)
Немного больше информации, вероятно, помогло бы, но моей первой мыслью было написать свой собственный универсальный обработчик событий, который можно использовать для каждой кнопки, а затем прикрепить его к какому-либо наиболее полезному событию, например, событию 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);