Как установить скин на XtraUserControl в Windows Form?

У меня есть простая форма Windows. В него я встроил ChildXtraUserControl, производный от XtraUserControl (DevEx v10.1).

Я хотел бы скрыть ChildXtraUserControl с помощью «Office 2010 Blue», и я ожидаю, что при запуске формы он будет выглядеть голубоватым. Я пробовал это двумя разными способами, но не могу заставить его работать.

Попытка 1: установите LookAndFeel в ChildXtraUserControl, установите ChildXtraUserControl в панель форм Windows в форме

Когда я запускаю это, я вижу только панель, которую я покрасил в бледно-желтый цвет.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        var devExUserControl = new DevExpressUserControl {Dock = DockStyle.Fill};
        panel1.Controls.Add(devExUserControl);
    }
}

public partial class ChildXtraUserControl : XtraUserControl
{
    public ChildXtraUserControl()
    {
        InitializeComponent();
        IntializeSkin();
    }

    private void IntializeSkin()
    {
        LookAndFeel.UseDefaultLookAndFeel = false;
        LookAndFeel.UseWindowsXPTheme = false;
        LookAndFeel.Style = LookAndFeelStyle.Skin;
        LookAndFeel.SkinName = "Office 2010 Blue";
    }
}

Попытка 2: я прочитал в Центре поддержки DevEx, что ChildXtraUserControl может быть в DevExpress PanelControl, а LookAndFeel установлен в PanelControl

Как и раньше, я вижу только бледно-желтый PanelControl. Похоже, что пост был для другой версии DevEx, но я подумал, что стоит попробовать.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        panelControl1.LookAndFeel.UseDefaultLookAndFeel = false;
        panelControl1.LookAndFeel.UseWindowsXPTheme = false;
        panelControl1.LookAndFeel.Style = LookAndFeelStyle.Skin;
        panelControl1.LookAndFeel.SkinName = "Office 2010 Blue";

        var devExUserControl = new ChildXtraUserControl { Dock = DockStyle.Fill };
        panelControl1.Controls.Add(devExUserControl);
    }
}

public partial class ChildXtraUserControl : XtraUserControl
{
    public ChildXtraUserControl()
    {
        InitializeComponent();
    }
}

У кого-нибудь есть идеи, что я делаю неправильно? Заранее спасибо.


person ck.    schedule 25.03.2015    source источник


Ответы (1)


Мне удалось заставить это работать, используя второй подход и изменив конструктор Form1, как показано.

    public Form1()
    {
        InitializeComponent();

        // add this line
        DevExpress.UserSkins.OfficeSkins.Register();

        panelControl1.LookAndFeel.UseDefaultLookAndFeel = false;
        panelControl1.LookAndFeel.UseWindowsXPTheme = false;
        panelControl1.LookAndFeel.Style = LookAndFeelStyle.Skin;
        panelControl1.LookAndFeel.SkinName = "Office 2010 Blue";

        var childXtraUserControl = new ChildXtraUserControl {Dock = DockStyle.Fill};
        panelControl1.Controls.Add(childXtraUserControl);
    }
person ck.    schedule 25.03.2015
comment
Кроме того, чтобы получить дочерние элементы управления DevEx (например, ComboBoxEdit) для ChildXtraUserControl, чтобы они были оформлены таким же образом, мне пришлось встроить StyleController в ChildXtraUserControl (с помощью дизайнера), настроить LookAndFeel на нем и установить свойство StyleController каждого детский контроль. - person ck.; 25.03.2015