c#皮肤程序

Visual Studio 2005工具箱上右击选择“选择项”,慢慢等...在弹出的“选择工具箱项”选项卡中,点击“浏览”,找到IrisSkin2.dll存放的位置,双击,你会发现多了个“SkinEngine”,确定。将公共控件里的“SkinEngine”,拖到窗体上,将皮肤文件*.ssk在“解决方案资源管理器”中添加到bin文件夹下的Debug文件夹下。(先复制皮肤文件*.ssk,在Debug文件夹上右击“粘贴”)在初始化时加上一句: 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)((ToolStripMenuItem)sender).OwnerItem).DropDownItems[i].Text)                {                    ((ToolStripMenuItem)sender).CheckState = CheckState.Checked;                    DataSet skin = new DataSet();                    skin.Tables.Add("skin");                    skin.Tables["skin"].Columns.Add("style");                    System.Data.DataRow dr = skin.Tables["skin"].NewRow();                    dr[0] = ((ToolStripMenuItem)((ToolStripMenuItem)sender).OwnerItem).DropDownItems[i].Text;                    skin.Tables[0].Rows.Add(dr);                    skin.WriteXml("skin.xml", XmlWriteMode.IgnoreSchema);                 }                else                {                    ((ToolStripMenuItem)((ToolStripMenuItem)((ToolStripMenuItem)sender).OwnerItem).DropDownItems[i]).CheckState = CheckState.Unchecked;                }            }            if (((ToolStripMenuItem)sender).Text == "系统默认")            {                RemoveSkin();                DataSet 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);                return;            }            foreach (SkinType st in (SkinType[])System.Enum.GetValues(typeof(SkinType)))            {                if (st.ToString() == ((ToolStripMenuItem)sender).Text)                {                    ChangeSkin(st);                    return;                }            }        }        /// <summary>        /// 改变皮肤        /// </summary>        /// <param name="st"></param>        public static void ChangeSkin(SkinType st)        {            System.Reflection.Assembly thisDll = System.Reflection.Assembly.GetExecutingAssembly();            if (se == null)            {                //TestSkin是指命名空间,这里你可以换成你自己的。                se = new Sunisoft.IrisSkin.SkinEngine(Application.OpenForms[0], thisDll.GetManifestResourceStream("TestSkin.skin." + st.ToString() + ".ssk"));                se.Active = true;                for (int i = 0; i < Application.OpenForms.Count; i++)                {                    se.AddForm(Application.OpenForms[i]);                }             }            else            {                //TestSkin是指命名空间,这里你可以换成你自己的。                se.SkinStream = thisDll.GetManifestResourceStream("TestSkin.skin." + st.ToString() + ".ssk");                se.Active = true;            }        }        /// <summary>        /// 移除皮肤        /// </summary>        public static void RemoveSkin()        {            if (se == null)            {                return;            }            else            {                se.Active = false;            }        }    }    /// <summary>    /// 换肤类型    /// </summary>    public enum SkinType    {        Calmness,        DeepCyan,        Eighteen,        Emerald,        GlassBrown,        Longhorn,        MacOS,        Midsummer,        MP10,        MSN,        OneBlue,        Page,        RealOne,        Silver,        SportsBlack,        SteelBlack,        vista1,        Vista2,        Warm,        Wave,        XPSilver    }} 4:调用在你的主窗体里加上一个MenuStrip菜单,建一个2级菜单(如:文件→更换皮肤),然后在Form_Load事件里写上调用代码: private void Form1_Load(object sender, EventArgs e)        {            //“更换皮肤ToolStripMenuItem” 是上面例子里“更换皮肤”这个ToolStripMenuItem的Name。            SkinClass.AddSkinMenu(更换皮肤ToolStripMenuItem);        } 5:注以下两个方法是主要换肤用的:ChangeSkin方法换肤 RemoveSkin方法恢复系统默认皮肤大家可以不用直接给单独一个窗体换肤。我以上的代码是生成一个换肤菜单,然后所有的窗体都是自动进行换肤了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值