[WinForm]IrisSkin皮肤的基本使用以及单独控件样式设置
介绍
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皮肤的基本使用以及单独控件样式设置相关推荐
- winform/timer控件/权限设置/三级联动
winform/timer控件/权限设置/三级联动 一.timer控件 组件--timer timer是一个线程,默认可以跨线程访问对象 属性:Enabled--可用性 Interval--间隔时间 ...
- [转] WinForm自定义函数FindControl实现按名称查找控件
原文地址 WinForm自定义函数FindControl实现按名称查找控件 本文所述实例实现WinForm自定义函数FindControl实现按名称查找控件的功能,在C#程序开发中有一定的实用价值. ...
- C# DevExpress 皮肤控件记住设置
C# DevExpress 皮肤控件记住设置 主要代码: #region 0 SKIN 样式 设置(读取.存储) public string defaultSkinName;//皮肤 // 皮肤更换 ...
- C# 中对WinForm窗体中的控件快速设置TableIndex次序
点击"视图"--"Tab键顺序",然后便可设置. 参考文章 1. ssilspro,在vs2008中做winform程序的时,调整控件TableIndex顺序的 ...
- Winform中在FastReport的PreviewControl预览控件中对report控件模板中控件值进行修改
场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- ssential Diagram for Windows FormsC#/winForm类似visio的拓扑图节点连线控件免费下载
Essential Diagram for Windows Forms是一款可扩展的.高性能的.NET平台下的拓扑图控件,可用于开发像Microsoft Visio一样的交互式地绘图和图解应用程序,在 ...
- winform 控件半透明设置
1.backcolor属性为color.FromArgb(100, 220, 220, 220); 2.全透明设置为transparent方法. 转载于:https://www.cnblogs.com ...
- Winform中通过代码给PanelControl添加子控件并进行定位
场景 DevExpress的PanelControl常用进行窗体页面的布局. 一般是拖拽一个PannelControl,然后是再拖拽其他控件. 如果是由代码生成控件并控制布局的话,怎样实现. 关注公众 ...
- 共享几套silverlight2 toolkit最新的皮肤控件样式下载
下载了最新的silverlight2 toolkit看看,发现里面的控件样式还是多漂亮的,与大家分享下. blue dark light orange purple red 样式源码下载:点击下载 当 ...
最新文章
- 如何降低数据中心宕机事件的影响
- 口语学习Day5:今天聊聊美国路牌PED XING是什么?
- buu [BJDCTF 2nd]Y1nglish-y1ng
- 快速排序算法_常用排序算法专题—快速排序
- BSP(BUSINESS SERVER PAGES)完整主机名设置及实现
- php实训总结00字,说明的比较细的php 正则学习实例
- leetcode24题:两两交换链表的节点
- Java的Socket编程
- 以太坊2.0合约余额新增3872 ETH
- neo4j︱neo4j批量导入neo4j-import (五)
- 双目测距(五)--匹配算法对比
- Intel Fortran编译器安装
- 【啊哈C语言】【习题答案】【第一章】
- linux输入法状态栏消失,隐藏 fcitx 输入法的状态栏
- 计算机仿真软件在医疗应用,医学虚拟仿真应用介绍
- 使用中文维基百科进行GloVe实验
- Windows2012 系统从MBR转GPT免重装的经验
- CPU不同字母的意思
- 5 Ways To Boost Typing Speed And Accuracy
- 有史以来最全的CMD命令
热门文章
- x20手机科学计算机,vivo X20全面屏智能手机
- java实现树型日记本_用Java语言实现的日记本.pdf
- 你和“Excel高手”之间,只差一款神级电子表格
- 一份专业的网站策划方案写法、演示标准
- l7sa008b故障代码_华硕主板根据故障代码维修指南
- Flink的Window与WindowAll 算子对比
- Android JNI 打印日志
- 计算机基础知识掌握评语,计算机学生老师评语
- Android 三星手机拍照,从图库选择照片旋转问题完美解决
- 关于travis scott的网名_qq心碎伤感网名2020最新