Причина, по которой ваш пробел становится красным, проста: keyboardPanel.Controls[2]
это пробел.обратите внимание, что кнопки не обязательно добавляются в список keyboardPanel.Control
в том порядке, в котором они названы.Значение: keyboardPanel.Controls[1]
не обязательно button1
, а также button55
не обязательно keyboardPanel.Controls[55]
.Теперь, если вы хотите извлечь кнопки по имени, вы должны использовать это:
keyboardPanel.Controls.Find("Button55" , true);
, где «button55» - это имя этого элемента управления, а true указывает на возможность поиска по всем дочерним элементам.
Но я думаю, что есть более простой способ изменить цвет.Используя Отправителя:
private void button_Click(object sender, EventArgs e)
{
Control btn = sender as Control;
btn.BackColor = Color.Red;
}
и сделайте этот метод обработчиком событий нажатия всех кнопок.
РЕДАКТИРОВАТЬ: Если вы действительно хотите переупорядочить элементы управления в GroupBoxВы должны посетить дизайнера.Простой способ добраться до дизайнера - щелкнуть правой кнопкой мыши на InitializeComponent()
в методе конструктора вашей формы и выбрать Перейти к определению.
Там вы найдете порядок добавления элементов управления.что-то вроде ниже:
this.groupBox1.Controls.Add(this.button2);
this.groupBox1.Controls.Add(this.button3);
this.groupBox1.Controls.Add(this.button1);
В моем случае Controls [0] это button2, Controls [1] это button3 и так далее.Вы можете перестроить их, как показано ниже:
this.groupBox1.Controls.Add(this.button1);
this.groupBox1.Controls.Add(this.button2);
this.groupBox1.Controls.Add(this.button3);