Visual Studio 2005工具箱上右击选择“选择项”,慢慢等...
在弹出的“选择工具箱项”选项卡中,点击“浏览”,找到IrisSkin2.dll存放的位置,双击,
你会发现多了个“SkinEngine”,确定。
将公共控件里的“SkinEngine”,拖到窗体上,将皮肤文件*.ssk在“解决方案资源管理器”中
添加到bin文件夹下的Debug文件夹下。(先复制皮肤文件*.ssk,在Debug文件夹上右击“粘贴”)
在初始化时加上一句:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
       public partial class Form1 : Form
       {
           public Form1()
           {
               InitializeComponent();
            this.skinEngine1.SkinFile = "*.ssk";
           }

private void Form1_Load(object sender, EventArgs e)
           {

}
       }
}

恢复默认皮肤请将红色语句注释或删除

先前贴的这篇文章大家可能觉的不太能理解,我注释也确实写的很少,步骤也不是很详细,现在重修改一下,希望大家能指正。

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)((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方法恢复系统默认皮肤

大家可以不用直接给单独一个窗体换肤。我以上的代码是生成一个换肤菜单,然后所有的窗体都是自动进行换肤了。

转载于:https://www.cnblogs.com/sntyy/archive/2008/11/05/1327677.html

c# 程序皮肤控件 ---------有点意思!相关推荐

  1. Delphi 皮肤控件AlphaControls的使用

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Alph ...

  2. Delphi皮肤控件分析与QQ的皮肤变色功能

    关于界面美化方面,一直是一个脑壳疼的问题!以前一直偷懒,使用的三方控件!但是在使用了一段时间之后,都或多或少的有些问题!不是我说三方控件如 何如何的不好!只是三方控件多是庞大的一个肢体,要兼顾的用户群 ...

  3. 教程:简单几步教你在Win版Delphi7中安装AlphaControls皮肤控件包.

    注:这是个简易教程. AlphaControls是一款不错的皮肤控件合集包. 它内置的诸多空间不仅能够让你的程序变得更加漂亮,同时你还可以为这些控件附加行为. ***第一步,下载AlphaContro ...

  4. alpha组件 color_标准皮肤控件组件AlphaControls发布 v15版本,添加了多种新属性 | 附下载...

    AlphaControls是一个标准的皮肤控件集合,它具有很多新的属性,可以添加到普通的控件中以增强程序界面效果,同时还能添加一些行为到普通的控件中,并使用了一些新技术.AlphaControls是一 ...

  5. Skin++皮肤控件的使用

    一.将SkinPlusPlus.h.SkinPlusPlusDLL.lib以及相关的皮肤文件(本例中Minimized.ssk)拷贝当前工作目录,并将SkinPlusPluse.h文件和SkinPlu ...

  6. Delphi著名皮肤控件库横向对比

    皮肤这东西很多人褒贬不一,有人认为程序做的好就行了,界面还是保持原生态来的稳定.的确,稳定是程序至关重要的一点,离开这点其他任何都无从谈起,但不可否认,无论是微软.苹果,还是大众用户,审美观越来越高, ...

  7. C++ 一个程序获取另一个程序Edit控件的内容

    转载地址:https://www.cnblogs.com/lujin49/p/4796502.html //一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HW ...

  8. 《如何更改其他程序ListView控件中某个Item的内容》

    <如何更改其他程序ListView控件中某个Item的内容> 天津 赵春生 ××× 一:程序说明: 这次我将介绍如何更改其他程序ListView控件中某个Item的内容,关于类似的拙文我已 ...

  9. WinForm皮肤控件(SkinEngine)

    WinForm皮肤控件(SkinEngine) 利用 IrisSkin2.dll 所提供的控件 SkinEngine 来为窗体添加皮肤. IrisSkin2.dll 及 皮肤素材,下载地址:http: ...

最新文章

  1. 如何自学Python?这本技术大咖推荐Python书籍,就是你的第一选择
  2. NSWindowController的初始化创建代码
  3. dedecms如何调用当前栏目的子栏目及子栏目文章
  4. Eclipse GCC 入门
  5. Android ADB 源码分析(三)
  6. getdatatable mysql_C# 自定义MySqlHelp类,包含了获取DataTable的方法,但是调用时总是提示“类型初始值设定项引发异常”...
  7. Js让光标停在输入框input框最后面
  8. c语言手机表白代码大全,C语言表白代码
  9. unity虚拟摇杆控制的实现
  10. Mcafee官方卸载工具
  11. Ps UI设计如何简单快捷切图
  12. 速度收藏--16个好玩的深度学习在线应用推荐
  13. 紫猫安卓按键之其他命令
  14. Ubuntu Wifi 配置 HP rtl8723be
  15. python安装random_如何安装python randon
  16. PHP快递查询接口api和快递单号智能判断PHP代码
  17. 用Disk Genius检测和修复硬盘坏道
  18. 纪中GMOJ语言模块题目1009
  19. oracle改字体大小_sqlplus改字体
  20. Linux - nm命令

热门文章

  1. 老方块 oracle培训,老方块Oracle 11g培训新版小学班 SQL 完整35课 星爷版 OCA OCP
  2. 小米高通系列清串号打开写号端口工具_小米qcn基带修复文件解决串号丢失和无信号附QCN写入工具及方法...
  3. Atmel Studio 7新建AVR单片机工程
  4. 一文搞懂:FT、DTFT、DFT、IDFT
  5. 超市使用erp系统有哪些优势?
  6. Stop:c000021a蓝屏解决方法
  7. 误入歧途的蓝屏代码——STOP:c000021a Unknown Hard Error
  8. 用matlab模拟调音台,虚拟调音台下载_Resolume|v4.1.1_9号软件下载
  9. 服务器连局域网网卡一直不亮的解决方法
  10. 大数据未来会如何发展