WinForm中使用DXperience控件中XtraForm,如何实现换肤

     在DevExpress.XtraEditors.XtraForm中,窗体的样式和皮肤有UseDefaultLookAndFeel属性。设置为false,就可以直接再属性里面修改样式和皮肤了。如果设置为true,可以再里面放控件defaultLookAndFeel,设置 defaultLookAndFeel的样式和皮肤,XtraForm窗体的样式和皮肤就可以随着改变。

    我试着定义一个XFrmBase窗体,再窗体上房一个控件:defaultLookAndFeel1,定义为Protected。然后其它窗体都从这个窗体上继承。发现再代码的任何一个地方,修改defaultLookAndFeel1的属性,所有窗体的样式和皮肤跟着改变。然后再把皮肤和样式保存在XML文件中,就实现了所谓的换肤功能。

具体步骤如下:
1. 定义一个XFrmBase窗体,在这个窗体上放defaultLookAndFeel1控件,修改为Protected。在XFrmBase.Designer.cs中,把
//this.defaultLookAndFeel1.LookAndFeel.SkinName = ...;
//this.defaultLookAndFeel1.LookAndFeel.Style = ...;
这两行注释掉,然后其它所有的窗体都从这个窗体继承。

2. 定义两个XML文件:
StyleXML.xml
<?xml version="1.0" encoding="utf-8"?>
<xml>
  <Style>
    <StyleValue value="">Flat</StyleValue>
    <StyleValue value="">UltraFlat</StyleValue>
    <StyleValue value="IsSelected">Style3D</StyleValue>
    <StyleValue value="">Office2003</StyleValue>
    <StyleValue value="">WinXp</StyleValue>
    <StyleValue value="">Skin</StyleValue>
  </Style>
</xml>
SkinXML.xml
<?xml version="1.0" encoding="utf-8"?>
<xml>
  <Skin>
    <SkinValue value="IsSelected">Caramel</SkinValue>
    <SkinValue value="">Money Twins</SkinValue>
    <SkinValue value="">Lilian</SkinValue>
    <SkinValue value="">The Asphalt World</SkinValue>
    <SkinValue value="">iMaginary</SkinValue>
    <SkinValue value="">Black</SkinValue>
    <SkinValue value="">Blue</SkinValue>
  </Skin>
</xml>

3. 两个操作XML文件的类:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Data;
using System.IO;

namespace FlowerWin.Classes
{
    public class XmlControl
    {
        protected string strXmlFile;
        protected XmlDocument objXmlDoc = new XmlDocument();

        public XmlControl(string xmlFile)
        {
            try
            {
                objXmlDoc.Load(xmlFile);
           

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值