【问题标题】:How to set skin on XtraUserControl in Windows Form?如何在 Windows 窗体中的 XtraUserControl 上设置皮肤?
【发布时间】:2015-03-25 12:55:56
【问题描述】:

我有一个简单的 Windows 窗体。在其中,我嵌入了一个派生自 XtraUserControl (DevEx v10.1) 的 ChildXtraUserControl。

我想使用“Office 2010 Blue”为 ChildXtraUserControl 设置皮肤,并且我希望在运行表单时它看起来是蓝色的。我已经尝试了这两种不同的方法,但无法使其正常工作。

尝试1:在ChildXtraUserControl中设置LookAndFeel,在窗体中将ChildXtraUserControl设置为Windows Form Panel

当我运行它时,我只看到面板,我将它涂成淡黄色。

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:我读到 on the DevEx Support Center,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();
    }
}

有人知道我做错了什么吗?提前致谢。

【问题讨论】:

    标签: c# devexpress-windows-ui


    【解决方案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);
        }
    

    【讨论】:

    • 另外,为了让 ChildXtraUserControl 的子 DevEx 控件(例如 ComboBoxEdit)以相同的方式蒙皮,我必须在 ChildXtraUserControl 中嵌入一个 StyleController(使用设计器),在其上设置 LookAndFeel ,并设置每个子控件的 StyleController 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2015-04-18
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多