Страницы

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

вторник, 31 марта 2020 г.

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

#c_sharp #winforms


Задача при нажатии на кнопку создать еще одну кнопку с определенным цветом кнопки.
 Добавляем на форму кнопку при нажатии на которую мы создаем кнопку с заданным цветом.

    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 появляется новая кнопка, но цвет ее стандартный
серый. Что я делаю не так?
    


Ответы

Ответ 1



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

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

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