Запретить кнопке наследовать BackColor от родителя - PullRequest
3 голосов
/ 20 декабря 2010

Когда у меня есть родительский элемент управления, который имеет BackColor, отличный от SystemColors.Control, но у меня есть кнопки на этом родительском элементе управления, которые я хочу нарисовать в системе. Однако, когда я не изменяю BackColor кнопок, он рисуется цветом родительского элемента. Когда я изменяю BackColor кнопки на SystemColors.Control, она больше не отображается в теме Windows.

alt text
Левая версия с SystemColors.Control, а правая без изменения BackColor.

alt text
Взорванный, это выглядит так. Здесь видно, что кнопки имеют сплошной фон.

Любые предложения, как я могу это исправить?

Эффект в образе может быть достигнут путем создания нового проекта WinNETms .NET 2.0 и изменения конструктора Form1 на следующий:

public Form1()
{
    InitializeComponent();

    var textBox = new TextBox();
    Controls.Add(textBox);

    var button = new Button { Text = "L", Width = 23, Height = 18, Left = -1, Top = -1 };
    textBox.Controls.Add(button);

    // Disable the line below to get the default behavior
    button.BackColor = SystemColors.Control;
}

1 Ответ

4 голосов
/ 20 декабря 2010

У меня, к сожалению, на данный момент есть доступ только к Windows 7, поэтому я не могу тестировать XP и т. Д., Но вы звоните Application.EnableVisualStyles в Main точку входа вашего приложения WinForms?

В Windows 7 с включенным Aero кнопки не принимают родительский цвет, если вызывается Application.EnableVisualStyles.

NB: Вы должны установить button.UseVisualStyleBackColor = true;, а неявно установить свойство BackColor кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...