关于skinEngine皮肤控件的问题
大致是这样的情况:
用户点击一个选项,执行代码skinEngine1.SkinFile = "Midsummer.ssk";更换他想要的皮肤。
用户点击另一个选项,恢复默认时的界面状况,该如何实现?多谢啊!
------解决方案--------------------
参考:
1:控件(破解版,只限.Net2005)和皮肤下载地址如下http://download1.csdn.net/down3/20070605/05142029888.rar
DEMO程序(含源码)
http://dl2.csdn.net/down4/20070628/28181121698.rar
2:载入
下载后的rar文件里有一个IrisSkin2.dll和一个skin文件夹。
添加引用,将IrisSkin2.dll引用进项目中。
然后在解决方案资源管理器里右击项目→添加→新建文件夹,文件夹名为skin。
建完skin文件夹后再右击这个文件夹→添加→现有项,在弹出的文件选择框里选*.*所有文件,再把解压出来的skin文件夹里的所有文件全选进去。
这时候我们可以看到skin文件夹里已经有了我们添加的所有的换肤文件了。再按ctrl键选中所有的skin文件夹里的文件,在属性栏里可以看到“生成操作”一栏,默认选项是“无”,我们把它改成“嵌入的资源”。
3:类
下面我们新建一个类,把以下的代码复制进去,别忘了把命名空间改成你自己的。
using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Windows.Forms;  
using System.Data;
//TestSkin命令空间,别忘了改成你自己的。  
namespace TestSkin  
{  
    class SkinClass  
    {  
        public static Sunisoft.IrisSkin.SkinEngine se = null;  
        /// <summary>  
        /// 增加换肤菜单  
        /// </summary>  
        /// <param name="toolMenu"></param>  
        public static void AddSkinMenu(ToolStripMenuItem toolMenu)  
        {  
            DataSet skin = new DataSet();  
            try  
            {
                skin.ReadXml("skin.xml", XmlReadMode.Auto);  
            }  
            catch  
            {
            }  
            if (skin == null || skin.Tables.Count < 1)  
            {  
                skin = new DataSet();  
                skin.Tables.Add("skin");  
                skin.Tables["skin"].Columns.Add("style");  
                System.Data.DataRow dr = skin.Tables["skin"].NewRow();  
                dr[0] = "系统默认";  
                skin.Tables[0].Rows.Add(dr);  
                skin.WriteXml("skin.xml", XmlWriteMode.IgnoreSchema);  
            }  
            foreach (SkinType st in (SkinType[])System.Enum.GetValues(typeof(SkinType)))  
            {  
                toolMenu.DropDownItems.Add(new ToolStripMenuItem(st.ToString()));
                toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1].Click += new EventHandler(frm_Main_Click);  
                if (st.ToString() == skin.Tables[0].Rows[0][0].ToString())  
                {  
                    ((ToolStripMenuItem)toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1]).Checked = true;  
                    frm_Main_Click(toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1], null);
                }
            }
            toolMenu.DropDownItems.Add(new ToolStripMenuItem("系统默认"));  
            toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1].Click += new EventHandler(frm_Main_Click);  
            if (skin.Tables[0].Rows[0][0].ToString() == "系统默认")  
            {  
                ((ToolStripMenuItem)toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1]).Checked = true;  
            }  
        }  
        static void frm_Main_Click(object sender, EventArgs e)  
        {
            for (int i = 0; i < ((ToolStripMenuItem)((ToolStripMenuItem)sender).OwnerItem).DropDownItems.Count; i++)  
            {  
                if (((ToolStripMenuItem)sender).Text == ((ToolStripMenuItem)((ToolSt