Как работает groupbox.Controls [i] или panel.Controls [i]? - PullRequest
0 голосов
/ 21 октября 2018

Я новичок в C #, и мне было интересно, как groupbox.Controls[i] и / или or panel.Controls[i] работает?

У меня есть панель с кучей кнопок для представления клавиатуры.Я меняю цвет кнопки клавиатуры при нажатии клавиши.

Однако, когда я делаю keyboardPanel.Controls[2].BackColor = Color.Red;, мой пробел становится красным.

Мой пробел button55 и на TabIndex 54.Почему мой пробел становится красным?

1 Ответ

0 голосов
/ 22 октября 2018

Причина, по которой ваш пробел становится красным, проста: 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...