介绍

IrisSkin 是为Microsoft Visual  Studio dotNET开发的最易用的界面增强dotNET(WinForm)组件包。它能完全自动的为您的应用程序添加支持换肤功能,甚至不需要更改您的设计好的Form以及添加一行代码!您也不再需要花费很多时间来使得自己的应用程序更漂亮。

IrisSkin提供一个强大的组件SkinEngine组件来帮助您完成这一切所有的工作。您需要做的,只是将一个SkinEngine组件拖放到您设计的主Form上,并且设置一些属性,然后所有的Form以及对话框,都会自动的在运行时支持换肤功能。您也可以轻易的让应用程序回复到原始Windows风格。

使用

1.在WinForm中添加资源文件后,将喜欢的皮肤拖放至里面,如图:

后台代码:

        public static SkinEngine AppSkin { get; set; }#endregion#region 构造函数public frmMain(){InitializeComponent();}private void frmMain_Load(object sender, EventArgs e){InitBasic();InitCom();SetSkinFile(skin, LHResource.Page);}private void SetSkinFile(SkinEngine skin, byte[] bytes){using (MemoryStream memoryStream = new MemoryStream(bytes)){skin.SkinStream = memoryStream;AppSkin = skin;}}#endregion

.csharpcode, .csharpcode pre {font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em; } .csharpcode .lnum { color: #606060; } 运行效果如图

2.若想设置某个控件的背景颜色,会发现无法修改的的情况,这时候需要设置需要修改控件的tag属性即可,下面以修改Button控件为例:

        Bitmap btnbmp = null;/// <summary>/// 修改button控件的背景颜色/// </summary>/// <param name="button"></param>private void ChangButtonColor(Button button){if (btnbmp == null){btnbmp = new Bitmap(button.Width, button.Height);using (Graphics g = Graphics.FromImage(btnbmp)){Rectangle r = new Rectangle(0, 0, btnbmp.Width, btnbmp.Height);using (LinearGradientBrush br = new LinearGradientBrush(r,Color.Red,Color.DarkRed,LinearGradientMode.Vertical)){g.FillRectangle(br, r);}}}CrossThreadOperate.InvokeControlAction<Button>(button, delegate(Button btn){btn.ForeColor = Color.White;btn.BackgroundImage = btnbmp;btn.Tag = frmMain.AppSkin.DisableTag;});}/// <summary>/// 还原button控件背景颜色/// </summary>/// <param name="button"></param>public void ReturnToBtnColor(Button button){CrossThreadOperate.InvokeControlAction<Button>(button, delegate(Button btn){btn.UseVisualStyleBackColor = true;btn.Tag = null;});}private void SetButtonBackColor<T>(T t, Button button) where T : Control{foreach (Control ctrl in t.Controls){if (ctrl is Button){Button btnTemp = (Button)ctrl;if (btnTemp.Name == button.Name)ChangButtonColor(button);elseReturnToBtnColor(btnTemp);}}}

.csharpcode, .csharpcode pre {font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em; } .csharpcode .lnum { color: #606060; }使用代码

        private void btnFInitPLC_Click(object sender, EventArgs e){SetButtonBackColor<GroupBox>(gpFunction, btnFInitPLC);SetTabPageVisible(tbcMain, tpInitPLC);}

.csharpcode, .csharpcode pre {font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em; } .csharpcode .lnum { color: #606060; }实现效果

相关代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
public class CrossThreadOperate
{public static void InvokeControlAction<t>(t cont, Action<t> action) where t : Control{if (cont.InvokeRequired){cont.Invoke(new Action<t, Action<t>>(InvokeControlAction), new object[] { cont, action });}else{action(cont);}}
}

参考资料

irisskin

A Generic Method for Cross-thread Winforms Access

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

[WinForm]IrisSkin皮肤的基本使用以及单独控件样式设置相关推荐

  1. winform/timer控件/权限设置/三级联动

    winform/timer控件/权限设置/三级联动 一.timer控件 组件--timer timer是一个线程,默认可以跨线程访问对象 属性:Enabled--可用性 Interval--间隔时间 ...

  2. [转] WinForm自定义函数FindControl实现按名称查找控件

    原文地址 WinForm自定义函数FindControl实现按名称查找控件 本文所述实例实现WinForm自定义函数FindControl实现按名称查找控件的功能,在C#程序开发中有一定的实用价值. ...

  3. C# DevExpress 皮肤控件记住设置

    C# DevExpress 皮肤控件记住设置 主要代码: #region 0 SKIN 样式 设置(读取.存储) public string defaultSkinName;//皮肤 // 皮肤更换 ...

  4. C# 中对WinForm窗体中的控件快速设置TableIndex次序

    点击"视图"--"Tab键顺序",然后便可设置. 参考文章 1. ssilspro,在vs2008中做winform程序的时,调整控件TableIndex顺序的 ...

  5. Winform中在FastReport的PreviewControl预览控件中对report控件模板中控件值进行修改

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  6. ssential Diagram for Windows FormsC#/winForm类似visio的拓扑图节点连线控件免费下载

    Essential Diagram for Windows Forms是一款可扩展的.高性能的.NET平台下的拓扑图控件,可用于开发像Microsoft Visio一样的交互式地绘图和图解应用程序,在 ...

  7. winform 控件半透明设置

    1.backcolor属性为color.FromArgb(100, 220, 220, 220); 2.全透明设置为transparent方法. 转载于:https://www.cnblogs.com ...

  8. Winform中通过代码给PanelControl添加子控件并进行定位

    场景 DevExpress的PanelControl常用进行窗体页面的布局. 一般是拖拽一个PannelControl,然后是再拖拽其他控件. 如果是由代码生成控件并控制布局的话,怎样实现. 关注公众 ...

  9. 共享几套silverlight2 toolkit最新的皮肤控件样式下载

    下载了最新的silverlight2 toolkit看看,发现里面的控件样式还是多漂亮的,与大家分享下. blue dark light orange purple red 样式源码下载:点击下载 当 ...

最新文章

  1. 如何降低数据中心宕机事件的影响
  2. 口语学习Day5:今天聊聊美国路牌PED XING是什么?
  3. buu [BJDCTF 2nd]Y1nglish-y1ng
  4. 快速排序算法_常用排序算法专题—快速排序
  5. BSP(BUSINESS SERVER PAGES)完整主机名设置及实现
  6. php实训总结00字,说明的比较细的php 正则学习实例
  7. leetcode24题:两两交换链表的节点
  8. Java的Socket编程
  9. 以太坊2.0合约余额新增3872 ETH
  10. neo4j︱neo4j批量导入neo4j-import (五)
  11. 双目测距(五)--匹配算法对比
  12. Intel Fortran编译器安装
  13. 【啊哈C语言】【习题答案】【第一章】
  14. linux输入法状态栏消失,隐藏 fcitx 输入法的状态栏
  15. 计算机仿真软件在医疗应用,医学虚拟仿真应用介绍
  16. 使用中文维基百科进行GloVe实验
  17. Windows2012 系统从MBR转GPT免重装的经验
  18. CPU不同字母的意思
  19. 5 Ways To Boost Typing Speed And Accuracy
  20. 有史以来最全的CMD命令

热门文章

  1. x20手机科学计算机,vivo X20全面屏智能手机
  2. java实现树型日记本_用Java语言实现的日记本.pdf
  3. 你和“Excel高手”之间,只差一款神级电子表格
  4. 一份专业的网站策划方案写法、演示标准
  5. l7sa008b故障代码_华硕主板根据故障代码维修指南
  6. Flink的Window与WindowAll 算子对比
  7. Android JNI 打印日志
  8. 计算机基础知识掌握评语,计算机学生老师评语
  9. Android 三星手机拍照,从图库选择照片旋转问题完美解决
  10. 关于travis scott的网名_qq心碎伤感网名2020最新