Страницы

Поиск по вопросам

суббота, 8 июня 2019 г.

Не меняется цвет кнопки если контрол динамический

Задача при нажатии на кнопку создать еще одну кнопку с определенным цветом кнопки. Добавляем на форму кнопку при нажатии на которую мы создаем кнопку с заданным цветом.
private static int X = 100; private static int Y = 100; private void buttonDynamic_Click(object sender, EventArgs e) { AddButton(X, Y); X += 100; } private void AddButton(int x, int y) { // создаем контрол System.Windows.Forms.Button buttonDyn = new System.Windows.Forms.Button(); // устанавливаем необходимые свойства buttonDyn.Location = new System.Drawing.Point(x, y); buttonDyn.Name = "button1"; buttonDyn.Size = new System.Drawing.Size(75, 23); buttonDyn.TabIndex = 0; //вот здесь меняем цвет кнопки buttonDyn.BackColor = Color.Chartreuse; buttonDyn.UseVisualStyleBackColor = true; // button1_Click - функция обработчик события нажатия на кнопку buttonDyn.Click += new System.EventHandler(button1_Click); Controls.Add(buttonDyn); // добавляем на форму
}
При нажатии на кнопку buttonDynamic появляется новая кнопка, но цвет ее стандартный серый. Что я делаю не так?


Ответ

Свойство BackColor относится к так называемым AmbientProperties. Смотрите Remarks
Его значение задаётся таким же, как у родительского контрола (это сделано для облегчения конструирования: добавляем контрол - его параметры определяются автоматически).
Пока контрол не добавлен на родительский, нет смысла менять такое свойство. Его нужно менять после добавления.
Controls.Add(buttonDyn); buttonDyn.BackColor = Color.Chartreuse;

Комментариев нет:

Отправить комментарий