Возможно ли использовать XP Visual Style в Vista / Win7? - PullRequest
1 голос
/ 08 июня 2010

Можно ли использовать стили XP в Vista / Win7? Если да, возможно ли это сделать для одного элемента управления.

Я знаю, что могу отключить визуальные стили по одному элементу управления, используя SetWindowTheme (). Я знаю, что можно отключить визуальные стили для всего приложения win form, удалив вызов EnableVisualStyles.

Причина, по которой я спрашиваю, заключается в том, что в приложении это будет использоваться, если элемент управления в состоянии ошибки имеет красный цвет заднего фона. Это не работает для ComboBoxes, когда приложение работает под Vista / Win7. Изменение цвета спины изменяет только выпадающий список, а не фактический элемент управления.

Я также пытался заставить BackColor изменить цвет комбинированного списка, как это происходит в XP и когда визуальные стили отключены, но я также не нашел способа сделать это легко.

И да, это легко решается в WPF ... / cry. :)

1 Ответ

3 голосов
/ 08 июня 2010

Ну, вы уже знаете, как это сделать.

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

class MyComboBox : ComboBox {
    protected override void OnHandleCreated(EventArgs e) {
        base.OnHandleCreated(e);
        SetWindowTheme(this.Handle, "", "");
    }
    [DllImport("uxtheme.dll")]
    private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
}

Независимо от того, что вы делаете, пользователь будет привыкать к тому, что его дизайны пользовательского интерфейса будут включать визуальные стили. И отметьте тот, который имеет нарушения зрения, что может привлечь вас к суду в США. У Windows Forms уже есть очень хороший способ указать на ошибки, для этого был разработан ErrorProvider.

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