Вы можете создать отдельный обработчик события и назначить его для события Click
для всех ваших кнопок:
private void ButtonClickHandler(object sender, EventArgs e)
{
// iterate over all buttons on form
foreach (var button in Controls.OfType<Button>())
button.BackColor = button == sender ? Color.Green : Color.Lavender;
}
Как указано в комментарии @CharlesMay, имейте в виду, что этот код найдет все без исключенияButton
это прямое дитя вашей формы.Есть несколько способов избежать этого:
1.Удерживайте кнопки в контейнере. Например, создайте Panel
(скажем, myPanel
) и поместите все эти кнопки на эту панель, а затем переберите элементы управления этой панели:
foreach (var button in myPanel.Controls.OfType<Button>())
2.Сохраните свою активную кнопку в закрытом поле. Таким образом, вам не нужно вообще перебирать элементы управления:
private Button _activeButton = null;
private void ButtonClickHandler(object sender, EventArgs e)
{
// disable previosly active button
if (_activeButton != null) _activeButton.BackColor = Color.Lavender;
// set new button
_activeButton = sender as Button;
// enable currently active button
if (_activeButton != null) _activeButton.BackColor = Color.Green;
}