Задача при нажатии на кнопку создать еще одну кнопку с определенным цветом кнопки.
Добавляем на форму кнопку при нажатии на которую мы создаем кнопку с заданным цветом.
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;
Комментариев нет:
Отправить комментарий