WinForm界面使用IrisSkin,可以说做到了一键美化,当然美化的效果仁者见仁智者见智,可以挑选自己喜欢的。

1、IrisSkin下载地址:https://www.cr173.com/soft/69061.html

2、将下载的文件放到Debug下面。

3、新建一个WinForm窗体,命名为Main:

4、Main代码实现如下:

        SkinEngine skinEngine = new SkinEngine();

        public Main()
{
InitializeComponent(); #region 生成皮肤样式按钮
string[] files = Directory.GetFiles(Path.Combine(Application.StartupPath, @"IrisSkin4\Skins"), "*.ssk", SearchOption.AllDirectories);
if (files != null && files.Length > )
{
//变量
int index = ; //按钮序号
int space = ; //按钮间隔
int btnWidth = ; //按钮宽度
int btnHeight = ; //按钮高度
int btnCount = ; //每行按钮个数 //每行显示7个按钮
for (int rows = ; rows < (files.Length % btnCount == ? files.Length / btnCount : (files.Length / btnCount) + ); rows++)
{
//最后一行的按钮个数
int lastCout = files.Length % btnCount;
//生成按钮
if (index < (files.Length / btnCount) * btnCount)
{
for (int cols = ; cols < btnCount; cols++)
{
Button btn = new Button
{
Location = new Point(cols * btnWidth + (cols + ) * space, rows * btnHeight + (rows + ) * space),
Width = btnWidth,
Height = btnHeight
};
string path = files[index];
string btnName = path.Substring(files[index].LastIndexOf(@"\") + );
btn.Text = btnName;
btn.Click += (object sender, EventArgs e) => { skinEngine.Active = true; skinEngine.SkinAllForm = true; skinEngine.SkinFile = path; tsslSkinFile.Text = Path.Combine(Application.StartupPath, btnName); };
Controls.Add(btn);
index++;
}
}
else
{
for (int cols = ; cols < lastCout; cols++)
{
Button btn = new Button
{
Location = new Point(cols * btnWidth + (cols + ) * space, rows * btnHeight + (rows + ) * space),
Width = btnWidth,
Height = btnHeight
};
string path = files[index];
string btnName = path.Substring(files[index].LastIndexOf(@"\") + );
btn.Text = btnName;
btn.Click += (object sender, EventArgs e) => { skinEngine.Active = true; skinEngine.SkinAllForm = true; skinEngine.SkinFile = path; tsslSkinFile.Text = Path.Combine(Application.StartupPath, btnName); };
this.Controls.Add(btn);
index++;
}
}
}
}
#endregion } /// <summary>
/// 弹出对话框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello World.", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
} /// <summary>
/// 恢复默认值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
skinEngine.Active = false;
}

5、换肤渲染前效果:

6、换肤如选DeepCyan.ssk,渲染的效果如下:

注:不想被渲染的控件,可以设其Tag属性值为9999,如测试区的DataGridView就设了此项。

好了,分享就到此结束了,希望对有此需要的人有一些帮助。

C# WinForm界面美化--使用IrisSkin实现换肤功能的更多相关文章

  1. .NET vs2010中使用IrisSkin2.dll轻松实现winForm窗体换肤功能

    IrisSkin2.dll是一款很不错的免费皮肤控件,利用它可以轻松的实现winForm窗体换肤! 网上很多朋友说在VS2010中不能使用IrisSkin2.dll,我这里提供一个取巧的办法. Iri ...

  2. 一种简单的实现:Android一键换肤功能

    现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,我把原作者的代码重新整理抽取出来,转换成Eclipse项目,重新整理成正确.可直接运行的项目. 代码运行结果如图. ...

  3. 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)

    一.背景 在越来越重视用户体验的今天,换肤功能也慢慢被重视起来.一个web系统用户可以选择一个自己喜欢的系统主题,在用户眼里还是会多少加点分的.我们很开心的是easyui v1.3.4有自带defau ...

  4. 【转】Javascript+css 实现网页换肤功能

    来源:http://www.php100.com/html/webkaifa/DIV_CSS/2008/1014/2326.html Html代码部分: 1.要有一个带id的样式表链接,我们要通过操作 ...

  5. Android 换肤功能的实现(Apk插件方式)

    一.概述 由于Android 没有提供一套统一的换肤机制,我猜可能是因为国外更注重功能和体验的原因 所以国内如果要做一个漂亮的换肤方案,需要自己去实现. 目前换肤的方法大概有三种方案: (1)把皮肤资 ...

  6. 用js来实现页面的换肤功能(带cookie记忆)

    用js来实现页面的换肤功能 js实现换肤功能的实现主要是通过利用js控制CSS来实现的.大致的实现原理是这样的, 1.先定义一个页面基本样式style.css来确定div的宽高等属性,使得整个页面的D ...

  7. JS实现网页换肤功能效果

    网页换肤的基本原理 使用 JS 切换对应的 CSS 样式表.例如hao123首页的右上方就有网页换肤功能.除了切换 CSS 样式表文件之外,通常的网页换肤还需要通过 Cookie 来记录用户之前更换过 ...

  8. cookie换肤功能

    <div class="selectSkin"> <input id="red" class="themeBtn" typ ...

  9. 换肤功能的实现以及监听storage实现多个标签页一起换肤

    1:需求:项目的侧边栏实现换肤功能,核心代码: updateSkin (val) { const existSkinLink = document.head.querySelector('link[i ...

随机推荐

  1. Hibernate注解之@Enumerated:针对枚举enum(转)

    https://my.oschina.net/xinxingegeya/blog/359968 @Column(name = "store_type", nullable = fa ...

  2. Spring Cloud第二篇 | 使用并认识Eureka注册中心

    ​ 本文是Spring Cloud专栏的第二篇文章,了解前一篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 ​​ 一.Sprin ...

  3. for循环使用element的折叠面板遇到的问题-3

    需求:for循环渲染上去的表单怎么使用element的表单校验 之前做这个的时候,死活绑不上去,不知道哪里出了问题,后来解决办法是prop要注意用拼接,使它和索引的变量一致 <el-form-i ...

  4. windows系统tomcat上开发的j2ee程序,如何适配linux系统上奔跑的websphere7

    公司需要将几个windows系统tomcat中间件下开发的j2ee系统部署到linux系统websphere7中间件下去运行. 这就需要做系统的适配工作.由于时间比较久了,具体问题就不详细写了.把这个 ...

  5. webpack4分包方案

    webpack4放弃了 commonsChunkPlugin,使用更方便灵活智能的 splitChunks 来做分包的操作. 下面有几个例子,并且我们假设所有的chunks大小至少为30kb(采用sp ...

  6. 使用Spring Data JPA的Specification构建数据库查询

    Spring Data JPA最为优秀的特性就是可以通过自定义方法名称生成查询来轻松创建查询SQL.Spring Data JPA提供了一个Repository编程模型,最简单的方式就是通过扩展Jpa ...

  7. UIView的作用

    UIView [UIView的作用] 主要用来显示应用程序的内容,可以作为label.button等控件的容器.表示屏幕上的一块矩形区域,同时可以处理该区域的绘制和触屏事件. MVC,MVVM等设计架 ...

  8. Binary Search Tree analog

    Description Binary Search Tree, abbreviated as BST, is a kind of binary tree maintains the following ...

  9. leetcode -- 最长回文子串

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...

  10. 【JS】332- 为什么我更喜欢对象而不是 switch 语句

    昨天偷懒了,欢迎点击关注???这样我就多更大的动力日更了- 正文从这里开始~~~ 最近(或者不是最近,这完全取决于您什么时候阅读这边文章),我正在跟我的团队伙伴讨论如何去处理这种需要根据不同的值去处理 ...