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);
Другие вопросы по тегам