100
1 3 3 3 3 4 4 14 15 15 15 15 16 16 16 16 17 17 18 18 19 19 20 20 21 21 22 22 22 22 22 22 23 23 23 24 24 24 24 24 24 24 24 25 32 37 50 52 55 目录 目录 目录 简介 感谢码云 特别声明 软件介绍 软件框架 支持开源 项目说明 更新日志 2022-07-25 V3.2.2 2022-07-03 V3.2.1 2022-06-16 V3.2.0 2022-05-15 V3.1.9 2022-04-20 V3.1.8 2022-04-18 V3.1.5 2022-04-03 V3.1.3 2022-03-28 V3.1.2 2022-02-12 V3.1.1 2022-01-05 V3.1.0 2021-11-19 V3.0.9 2021-10-01 V3.0.8 2021-09-08 V3.0.7 2021-08-12 V3.0.6 2021-07-11 V3.0.5 2021-05-20 V3.0.4 2021-04-11 V3.0.2 2021-02-26 V3.0.1 2021-01-26 V3.0.0 2021-01-05 V2.2.10 2020-12-20 V2.2.9 2020-10-12 V2.2.8 2020-09-17 V2.2.7 2020-07-30 V2.2.6 2020-06-29 V2.2.5 2020.05.05 V2.2.5 2020.04.25 V2.2.4 2020.04.19 V2.2.3 2020.04.11 V2.2.2 2020.02.15 V2.2.1 2020.01.01 V2.2.0 2019.10.01 V2.1.0 2019.03.12 V2.0.0 2012.03.31 V1.0.0 常见问题 安装 主题 国际化 字体图标 控件 目录 1 / 100

GVP - gitee.com

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GVP - gitee.com

1333344

141515151516161616171718181919202021212222222222222323232424242424242424253237505255

目录目录

目录

简介

感谢码云

特别声明

软件介绍

软件框架

支持开源

项目说明

更新日志

2022-07-25 V3.2.22022-07-03 V3.2.12022-06-16 V3.2.02022-05-15 V3.1.92022-04-20 V3.1.82022-04-18 V3.1.52022-04-03 V3.1.32022-03-28 V3.1.22022-02-12 V3.1.12022-01-05 V3.1.02021-11-19 V3.0.92021-10-01 V3.0.82021-09-08 V3.0.72021-08-12 V3.0.62021-07-11 V3.0.52021-05-20 V3.0.42021-04-11 V3.0.22021-02-26 V3.0.12021-01-26 V3.0.02021-01-05 V2.2.102020-12-20 V2.2.92020-10-12 V2.2.82020-09-17 V2.2.72020-07-30 V2.2.62020-06-29 V2.2.52020.05.05 V2.2.52020.04.25 V2.2.42020.04.19 V2.2.32020.04.11 V2.2.22020.02.15 V2.2.12020.01.01 V2.2.02019.10.01 V2.1.02019.03.12 V2.0.02012.03.31 V1.0.0

常见问题

安装

主题

国际化

字体图标

控件

目录

1 / 100

Page 2: GVP - gitee.com

555758596162646566676869707172737576788081818487879295959799

UIAvatarUIBatteryUIBreadcrumbUIButtonUICheckBoxUICheckBoxGroupUIGroupBoxUILabelUILedDisplayUILedLabelUILedStopwatchUILinkLabelUIMarkLabelUIPanelUIRadioButtonUIRadioButtonGroupUISwitchUISymbolButtonUISymbolLabelUITitlePanel

窗体

UIFormUILoginForm

多页面框架

简述及示例

DPI缩放自适应方案

工具类库

IniFile - Ini文件读写类

IniConfig - ini配置文件类

Json - 简易的Json静态类

目录

2 / 100

Page 3: GVP - gitee.com

GVP 4.4K Stars GVP 845 Forks

帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages

Gitee: https://gitee.com/yhuse/SunnyUI

GitHub: https://github.com/yhuse/SunnyUI

Nuget: https://www.nuget.org/packages/SunnyUI/

Blog: https://www.cnblogs.com/yhuse

因为评论没有查找,不利于解决问题,故关闭项目评论功能。如果是问题或者建议,请按照Issues模版添加Issue。

添加Issue: https://gitee.com/yhuse/SunnyUI/issues/new

欢迎交流,QQ群: 56829229 (SunnyUI技术交流群),请给源码项目点个Star吧!!!个人学习交流免费,商业应用需要授权,联系QQ:17612584 咨询授权事宜。

SunnyUI.Net项目已加入dotNET China 组织。

SunnyUI.Net, 是基于.Net Framework 4.0~4.8、.Net 6 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。

源码编译环境:VS2019 16.8+ (16.8.0是支持.Net5的最低版本)

简介

感谢码云

特别声明

软件介绍

简介

3 / 100

Page 4: GVP - gitee.com

VS2022,安装.NetFramework4.0目标包的方法见:https://www.cnblogs.com/yhuse/p/15536393.html

动态库应用环境: VS2010及以上均可,支持.Net Framework 4.0+、.Net 5、.Net 6推荐通过Nuget安装:Install-Package SunnyUI,或者通过Nuget搜索SunnyUI安装。

不支持(.Net Framework 4 Client Profile)。

希望SunnyUI对您有用,您的支持也是SunnyUI开源的动力,SunnyUI有您更精彩!

软件框架

支持开源

简介

4 / 100

Page 5: GVP - gitee.com

多多打赏,喝点咖啡提提神,或者防脱洗发水保养下头发,哈哈哈!~

1、开源控件库

基于.Net Framework4.0,原生控件开发,参考 Element主题风格,包含 按钮、编辑框、下拉框、数据表格、工控仪表、统计图表在内的常用控件超过 70 个,满足常规开发需求,每个控件都精雕细琢,注重细节;

包含 Element 风格主题 11 个,其他主题 6 个,可通过多彩主题模式自定义主题。包含主题管理组件 UIStyleManager,可自由切换主题。

简介

5 / 100

Page 6: GVP - gitee.com

简介

6 / 100

Page 7: GVP - gitee.com

简介

7 / 100

Page 8: GVP - gitee.com

简介

8 / 100

Page 9: GVP - gitee.com

简介

9 / 100

Page 10: GVP - gitee.com

简介

10 / 100

Page 11: GVP - gitee.com

简介

11 / 100

Page 12: GVP - gitee.com

简介

12 / 100

Page 13: GVP - gitee.com

2、工具库

简介

13 / 100

Page 14: GVP - gitee.com

收集整理开发过程中经常用到的工具类库。

3、扩展库

收集整理开发过程中经常用到的扩展类库。

4、多页面框架

参考Element,包括7种常用框架风格,只需几行简单的代码即可创建多页面程序,其支撑组件包括UIForm,UIPage,UIFrame,集合常用控件库即可快速开发WinForm应用程序。

个人学习交流免费,商业应用需要授权。个人承接外包项目、个人开发商业项目等,公司内部使用、开发项目等均属于商业应用范畴。联系QQ:17612584 咨询授权事宜。

禁止使用SunnyUI控件库开发违法应用,或使用从事其他非法目的违法犯罪行为。因此产生的法律责任与SunnyUI无关。

项目说明

简介

14 / 100

Page 15: GVP - gitee.com

+ 增加 * 修改 - 删除

* UIForm: 多页面框架增加PageAdded,PageSelected,PageRemoved事件* UIComboBox: 屏蔽FormatString的编辑器* UIFormHelper: 解决ShowNotifier打开多个,全部关闭时出错的问题* UITextBox: 增加SelectionChanged事件* UITextBox: 修复Click点击事件* UILineChartOption: 增加移除线的操作* UIForm: 增加UnRegisterHotKey,卸载全局热键* UIMessageBox: 消息弹窗文本增加滚动条* UIComboTreeView: 修复CanSelectRootNode时可以展开子节点* UIDataGridView: 增加滚动条边框线的设置* UIDataGridView: 修复一处滚动条的显示位置* UILineChart: 修改两个点时可以不显示连接线* FastLZ: 增加了扩展的自定义压缩解压方法* 增加几个通用函数* 增加XML文档文件

+ UIGifAvatar: Gif动态头像+ UICalendar: 增加日历控件* UITextBox: 重写水印文字,解决不同背景色下泛白的问题* 增加XML文档文件* UICheckBoxGroup: 设置条目状态前判断是否创建* UIDoubleUpDown: 修复了不能设置字体颜色的bug* UIIntegerUpDown: 修复了不能设置字体颜色的bug* UISymbolButton: 修复了出现颜色不填充问题* UIMessageBox: 询问窗口的Focus按钮的绘制线换成背景色* UINavMenu: 绘制节点字体图标增加偏移SymbolOffset* UIDataGridView: 删除 ShowRect、ShowGridLine、RowHeight三个属性* UIDropDown: 解决下拉控件关闭报错* UITabControl: 多页面框架关闭页面时执行UIPage的FormClosed事件* UIComboDataGridView: 增加FilterChanged,输出过滤文字和记录条数* UIComboTreeView: 增加下拉框宽度、高度* UIComboDataGridView: 增加下拉框宽度

+ UIVerificationCode: 增加验证码控件* NuGet发布版本去除.Net5 Winform支持,可自行编译* UIBarChart: 重写Y轴坐标显示* UIForm: 弹窗默认关闭半透明遮罩* UICombobox: 增加了几个关闭过滤窗体的地方* UIDataGridView: 恢复几个原生属性:* 隐藏 ShowRect, 设置原生属性:BorderStyle = BorderStyle.FixedSingle;* 隐藏 ShowGridLine, 设置原生属性:CellBorderStyle = DataGridViewCellBorderStyle.Single;* 隐藏 RowHeight, 用 SetRowHeight() 代替,或设置原生属性:AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None,RowTemplate.Height设置为高度* 不再判断DataSource绑定List为空,出现”索引-1没有值“用户自行判断* UITextBox: 尺寸改变时重绘* UIPanel: 尺寸改变时重绘* UIStatusForm: 标题栏国际化* 修改了控件属性注释* UIComboBox: Selceted=-1,清除文本* UIComboDataGridView: 修复过滤时,列未绑定DataPropertyName出错的问题* UITabControl: 修复了一个首页无法关闭的问题* ControlEx: 更新几个函数* UIMainFrame: 修复了显示页面关闭按钮,移除最后一个页面出错的问题

更新日志

2022-07-25 V3.2.2

2022-07-03 V3.2.1

2022-06-16 V3.2.0

更新日志

15 / 100

Page 16: GVP - gitee.com

* UIComboBox: 过滤时修复ValueMember绑定值的显示* UIComboTreeView: 显示CheckBoxes时自己选中节点文字可切换状态* UITreeView: 增加了点击文字改变CheckBox状态的NodeClickChangeCheckBoxes* UITreeView: 修复了一个设计期显示错误* UIListBox: 增加滚动条颜色设置* UILight: 增加文字显示* UILoginForm: 将文本资源放入窗体属性* UITabControl: 修复屏蔽左右键后其他控件无法使用左右键的问题* UIPage: ShowTitle时,可调整Padding* UIForm: 可拖拽时Padding可以调整大小* UIDoubleUpDown: 增加禁止输入属性* UIIntegerUpDown: 增加禁止输入属性* UIDataGridView:ShowGridLine属性更新* UIForm: 屏蔽一些属性* UIPage: 屏蔽一些属性* UIDataGridView: 解决原生控件DataSource绑定List,并且List为空,出现”索引-1没有值“错误* 更新弹窗不置顶的Bug

* UIComboBox: 过滤文字为空时,下拉框显示所有数据列表* UISplitContainer: 修复调用Collapse()后,展开/收回操作失效* UITabControl: 不显示标签页时屏蔽左右键* UILineChart: 关闭Smooth绘制,数值差距大或者持续缩放会出错* UIForm: 可拖拽时Padding.Top增加1,解决一些显示问题* UIForm: 修复一处设置错误* UITabControl: 关闭按钮增加鼠标移入的效果* UIEditForm: 修改一处Show引起的无法获取控件值的问题

* UIComboDataGridView: 增加行多选* UIComboBox: 增加过滤,ShowFilter* UIDataGridView: 增加滚动条的颜色设置* UIComboBox: 过滤下拉控跟随主题配色* UINavBar: 重构扩展函数* UINavMenu: 重构扩展函数* UIComboBox: 根据Text自动选中SelectIndex* UICheckBox: 值相同时不响应值改变事件* UITextBox: 增加对按钮设置ToolTip* UIStyle: 增加属性以期控件跟随窗体缩放* UIAvator: 增加缩放* UISplitContainer: 增加主题样式* UIPage: 调整了标题的最小高度* UIForm: 调整了标题的最小高度* UITitlePanel: 调整了标题的最小高度* UINavBar: 修复一处索引引起的出错

+ UIStyle: 增加全局字体大小设置+ UIUserControl: 增加用户控件基类+ FastLZ: FastLZ压缩解压类* UIForm: 默认设置AutoScaleMode为None* UIPage: 默认设置AutoScaleMode为None* UIUserControl: 默认设置AutoScaleMode为None* UITreeView: 增加水平滚动条* UITreeView: 垂直滚动条未显示时禁止鼠标滚轮滚动刷新* UITreeView: 自定义行颜色,可通过代码给颜色值,SetNodePainter* 编译SunnyUI.Demo为VS2010可编译版本* UIDPIScale: DPI重构下拉框组件配色* UIComboDataGridView: 修复一处点击清除按钮后确定出错* UIComboDataGridView: 更新了FilterColumnName为空时的过滤出错

2022-05-15 V3.1.9

2022-04-20 V3.1.8

2022-04-18 V3.1.5

2022-04-03 V3.1.3

更新日志

16 / 100

Page 17: GVP - gitee.com

* UIButton: 增加是否显示浅色背景LightStyle* IFrame: 增加两个接口* UIStyle: 修改等待窗体与主题配色一致

此版本改动较大,请关注更新日志- UIComboboxEx: 删除,其源码见:https://gitee.com/yhuse/SunnyUI/blob/V3.0.8/SunnyUI/Controls/UIComboboxEx.cs- UITitlePage: 删除,其源码见:https://gitee.com/yhuse/SunnyUI/blob/V3.0.8/SunnyUI/Frames/UITitlePage.cs- UIStyle: 删除内置主题:White、Office2010Blue、Office2010Silver、Office2010Black、LightBlue、LightGreen、LightOrange、LightRed、LightGray、LightPurple+ UISytle: 增加内置主题:LayuiGreen、LayuiRed、LayuiOrange* UIStyle: 调整内置主题配色:DarkBlue、Black* UIStyle: 重构主题配色代码* UIForm: 增加了查找页面的方法* UINavMenu: 修复TipsText显示位置* UIComboDataGridView: 增加自动过滤、单元格双击选中* UIComboDataGridView: 修改拼写错误,FilterColomnName改为FilterColumnName* UILineChart: 默认图线平滑关闭* UIDataGridView: 更新DPI缩放对控件的适配* UISplitContainer: 更新按钮刷新* UIForm: 修改TitleHeight后窗体仍然保持可拖拽调节大小* UITextBox: 增加滚动条的颜色设置* UIRichTextBox: 增加滚动条的颜色设置* UIForm: 增加DPI强制缩放的函数ReSetDPIScale* UIPanel: 修复Radius设置不能超过35的问题* UIControl: 修复Radius设置不能超过35的问题* UIColorPicker: 修复选中颜色不显示* UIBarChart: 增加X轴文字倾斜* UIListBox: 修复在选中某一项后,清除选中项需要两次操作* UIDataGridView: 更新单选时选中值SelectedIndex值* UIButton: 增加了AutoSize属性* UIComboTreeView: 节点默认不自动展开* UIRichTextBox: 增加了一些原生的属性和事件* UIListBox: 按键上下移动选择项目时,滚动条跟随* UIEditForm: 继承后可修改IsOK* UIDoubleUpDown: 可以设置按钮大小和颜色* UIIntegerUpDown: 可以设置按钮大小和颜色* UITextBox: 增加了只读的颜色设置* UIControl: 基类增加只读颜色设置

+ UIIPTextBox: 增加IP地址输入框+ UISmoothLabel: 平滑文字带边框的标签* UIAnalogMeter: 支持背景透明色* UIForm: 增加页面间传值方法SetParamToPage* UILineChart: 增加图线隐藏* UIIntegerUpDown: 增加圆角控制* UIDoubleUpDown: 增加圆角控制* UITextBox: 修正编辑框高度* UIDoubleUpDown: 修正默认值不为0时,编辑值为0的问题* UIPanel: 禁止显示滚动条* UITextBox: 关闭设计期水印文字显示* UIBreadcrumb: 增加未选中步骤文字颜色* UIBreadcrumb: 增加两端对齐,AlignBothEnds* UISymbolButton: 设置完图片即可更新* UIDataGridView: 更新单选时选中值SelectedIndex值* UINotifiler: 修改了点击事件* UIComboBox: 增加了下拉框颜色设置* UINavMenu: SelectPage增加Guid接口* UITabControl: 修改删除页面时的页面跳转* UIControl: 设置圆角的范围* UIPanel: 设置圆角的范围* UINavMenu: 设置滚动条背景色

2022-03-28 V3.1.2

2022-02-12 V3.1.1

更新日志

17 / 100

Page 18: GVP - gitee.com

* UIPagination: 修复按钮图标配色* UILine: 修复了文本为空不显示的问题* UIPanel: 调整边框和圆角的绘制* UIControl: 调整边框和圆角的绘制* UILineChart: 双坐标轴支持选区域缩放* IFrame:增加了判断页面是否存在的代码* UITextBox: 按钮支持自定义颜色* UILineChart: 支持FillColor透明* 源码兼容VS2019编译* 修复了日期时间选择框下拉框的按钮配色* 修复日期选择控件值切换响应两次* Demo增加全局热键* 修改部分控件小数位数属性名称为DecimalPlaces* 字体图标选择界面,增加搜索框,搜索结果标红显示* 下拉控件增加内存释放

+ ChineseColors: 中国传统颜色+ UITexture: 增加主题背景纹理类+ BmpFile: 24bit真彩色位图数据结构类+ BigEndianBinaryWriter: 大端字节序的二进制写入器+ IFrame: 创建文档* UIStyle: 完善控件支持DPI自适应缩放。* UITreeView: 节点点击时同步父节点和子节点的状态* UILine: 增加线的样式,支持透明背景* UISymbolButton: 字体图标增加颜色设置* UIForm: 标题栏按钮可以设置颜色* UIForm: 右下角弹窗增加点击交互* UINavMenu: 滚动条可设置颜色* UIEditForm: AddComboTreeView 加默认值* UISwitch: 增加是否只读属性* UILineChart: 简化了设置坐标轴范围的函数* UIHeaderButton: 增加角标* UITabControl: 增加角标* UIBarChart: 增加柱子上显示数值* UILineChart: X轴支持字符串显示* UILineChart: 增加自定义坐标轴刻度* UILineChart: 双坐标轴增加纵横参考线* UILineChart: 增加双Y坐标轴* UILineChart: 增加坐标线、图线边框等是否显示的设置* UIPage: 增加NeedReload,页面切换是否需要重载Load* UIListBox: 增加修改文字颜色* UISymbolLabel: 修复Dock和AutoSize同时设置的Bug* UIInputDialog: 输入框增加半透明遮罩* UIForm: 增加全屏遮罩,Form的ShowDialogWithMask()扩展方法* UINavMenu: 选中项可设置背景色渐变* UIButton: 增加了渐变色* UIPanel: 增加了渐变色* UIDoubleUpDown: 增加Readonly属性* UINavMenu: 修改了一处可能的出错* UIComboDataGridView: 有过滤输入框时默认Focus* UIChart: 修改可能显示出错的问题* UIToolTip: 修复默认显示* UIHeaderButton: 更改图片自动刷新* UIPipe: 修正界面设计器删除不了的问题* UIMessageTip: 修复可能出错的问题* UIPage: 增加FeedBack和SetParam函数,用于多页面传值* UIChart: 修复编辑器显示时出错的问题* UIDataGridViewFooter: 修复一处可能不显示的问题

+ SunnyUI: 增加.Net6版本的支持+ UIStyle: 全部SunnyUI控件支持DPI自适应缩放

2022-01-05 V3.1.0

2021-11-19 V3.0.9

更新日志

18 / 100

Page 19: GVP - gitee.com

+ UISplitContainer: 增加UISplitContainer控件+ IniFileEx: 增加INI文件读取类(不用WinAPI)+ UIForm: 增加全局热键+ UIForm: 增加IFrame接口* UILabel: 增加文字旋转角度* UIMessageForm: 多个按钮显示时增加FocusLine* UIFlowLayoutPanel: 修改不同DPI缩放滚动条未覆盖的问题* UIComboDataGridView: 增加过滤* UIDataGridView: 增加一个可能出错的判断* UIEditForm: 代码生成增加ComboCheckedListBox类型* UIEditForm: 代码生成增加ComboTreeView类型* UIFlowLayoutPanel: 增加Scroll事件* UIRoundProcess: 增加显示小数位数* UICombobox: 右侧边框不显示时,去除绘制线* UILine: 调整最小长、宽为1* UITextBox: 支持修改背景色* UICheckBoxGroup :增加SetItemCheckState功能* UITextBox: 调整最小高度限制* UIProcessBar: 调整最小高度为3* UILineChart: 修改图线显示超出范围的问题* UITreeView: 判断节点Checked是否改变,只有改变时才赋值* UIListBox: 增加DrawItem和Demo* UILineChart: 修改自定义最大值最小值为无穷时出错的问题* UILineChart: 显示点的颜色支持自定义* UILineChart: 支持数据包括Nan

+ Mapper: 轻量级的对象映射框架,可以映射值类型(包括Struct),和以值类型构成的List和数组。* UITreeView: 修复TreeView默认展开时,绘制半选状态报错的问题* UIDataGridViewFooter: 文字显示方向与Column列显示方向一致* UICombobox: 修复使用BindingList进行绑定,DisplayMember是空字符串显示错误* UIStyle: 修改默认字体的GdiCharSet* UIHeaderButton: 增加Disabled颜色* UISwitch: 增加Disabled颜色* UIForm: 增加Movable属性,控制点击标题行是否能移动窗体

+ MMFile: 增加多进程通信框架+ UIComboDataGridView: 增加表格下拉列表框+ UIMillisecondTimer: 增加毫秒定时器+ 增加ToolTip接口,在用UIToolTip时解决类似UITextBox这类的组合控件无法显示ToolTip的问题* UIForm: 修复多屏时最大化显示的问题* UIPage: 修复OnLoad在加载时重复加载两次的问题* UITextBox: 重写了水印文字的画法,并增加水印文字颜色* UICombobox: 修改Watermark及其颜色* UITextBox: 增加按钮* UIPanel: 支持背景图片显示* UITitlePanel: 增加标题文字颜色* UIDropControl: 优化下拉框控件显示效果* UIEditForm: 代码创建时增加UISwitch开关文字描述* UINavMenu: 增加自定义TipsText显示的颜色* UITreeView: CheckBoxes增加三态,感谢群友: 笑口常开* UILineChart: 增加可只显示点的模式* UICombobox: 增加ShowDropDown函数* UIGroupBox: 解决Radius为0时的报错* UIAnalogMeter: 增加ValueChanged事件* Demo: 修改Demo的UITitlePage为UIPage,UITitlePage已废弃* UIForm, UIPage: 增加TitleFont属性* UIProcessBar: 修改不显示百分比时,显示数值* UIDatePicker: 增加可选择年、年月、年月日* UIDateTimePicker: 选中的年月日标记显示* UIImageButton: 更改了一个属性为私有,在VB.Net下不区分大小写而出错* UITabControl: 增加DisposeTabPageAfterRemove标志,移除TabPage后,是否自动销毁TabPage

2021-10-01 V3.0.8

2021-09-08 V3.0.7

更新日志

19 / 100

Page 20: GVP - gitee.com

* UITabControl: 关闭TabPage并销毁TabPage* 整理了一些GDI绘图的常用方法扩展* 整理了一些扩展函数

+ UIPipe: 增加管道控件+ UIValve: 增加阀门控件+ UIStyle: 增加多彩主题,以颜色深色,文字白色为主+ UIStyle: 增加紫色主题+ UITableLayoutPanel: 增加控件+ Demo: 增加工控分类+ ITranslate: 增加多语翻译接口+ UGif: GIF图片解析类+ SunnyUI: Nuget项目引用增加签名* UIFlowLayoutPanel: 增加了几个原生方法* UITransfer: 增加了显示多个移动的属性* UIProcessBar: 增加垂直方向的进度显示* UILight: 默认不显示灯光亮线* UINavMenu: 显示子节点提示箭头* UINavBar: 增加选中项圆角* UIImageListBox: 从文件载入图片,并且解除占用* UICombobox: 增加几个原生方法* UIListBox: 增加一大波ListBox原生方法* UIListBox: 增加Items变更的事件* UIForm: 修复最大化盖住任务栏的问题* UITextBox: 增加GotFocus和LostFocus事件* UIFlowLayoutPanel: 可像原生控件一样通过Controls.Add增加* UIListBox: 选中项显示方角* UIListBox: 增加多选行* UIComboTreeView : 修复SelectedNode=null的问题* UIRichTextBox: 修改滚动条没有文字时自动隐藏* UIPage: 修复OnMouseMove事件* UIStyle: 更新了放在TableLayoutPanel里控件的自定义颜色问题* UILocalize: 内置支付串已经处理完国际化* UILineChart: 可自定义背景色* UILineChart: 增加实时数据的Demo* UIBarChart, UIPieChart, UIDoughnutChart增加更新数据的方法* UITreeView: 调整了显示CheckBoxes时图片位置* ISymbol: 将字体图标最大尺寸从64调整到128* UITextBox: 修改Focus可用* UIButton: 增加ShowFocusColor,用来显示Focus状态* UIPage: 修复OnLoad在加载时重复加载两次的问题,增加Final函数,每次页面切换,退出页面都会执行* UIStyle: 多彩颜色增加随机颜色Demo* UIScrollingText: 增加属性控制开启滚动* UIPage: 恢复删除的Initialize事件* ISytle: 调整主题切换执行流程* IStyle: 支持自定义主题* ISymbol: 增加SymbolOffset接口* UITabControl: 支持Tab在下方显示

+ 字体图标: 增加FontAwesome V5.15版本字体图标+ UISignal: 增加信号强度显示控件+ UIToolStripDropDown: 增加了一个弹窗管理类* UIPage: 增加标题行,后期以替代UITitlePage* Demo的Controls下的页面全部从UITitlePage切换到UIPage,后期会逐步舍弃UITitlePage。* UIDataGridView: 增加了一个RowHeight,默认23* IStyleInterface: 设置为Public,可基于此扩展外部控件* UIRichTextBox: 支持可改背景色* UIPagination: 更新了Demo,分页切换事件加载数据。* UITitlePage: 解决标题栏闪烁* UITextBox: 增加图标和字体图标的显示* UITextBox: MaximumEnabled,MinimumEnabled代替HasMaximum,HasMinim

2021-08-12 V3.0.6

2021-07-11 V3.0.5

更新日志

20 / 100

Page 21: GVP - gitee.com

* UIHeaderButton: 增加了TextImageRelation,实现文本和图像的相对位置* UIListBox: 修改对象绑定的显示问题* UICombobox: 更新了数据绑定相关代码* UITabControl: Tab页标题选中高亮颜色增加可调整高度* UINavBar: 标题选中高亮颜色增加可调整高度* UIListBox: 更新一处数据绑定显示错误* UINavMenu: 增加右侧图标* UIBattery: 修改可自定义背景色* UILight: 增加方形显示,优化渐变色* UIHeaderButton: 增加ShowSelected,是否显示选中状态* UIBarChart: 修正一个显示的Bug* UIRoundProcess: 修改显示值* UIRichTextBox: 增加WordWrap属性* UIDataGridView: 自定义单元格颜色* IFame: 增加一个反馈的接口,Feedback,Page可将对象反馈给Frame* UIAvatar: 更改图片显示* UIPagination: 设置总数在页面不超过总页数的情况下不刷新* UITextBox等组合控件将其回调事件的Sender设置为this,而不是其内置控件* UIFlowLayoutPanel: 增加滚动条颜色属性

+ UIObjectCollection: 带集合个数改变事件的对象集合类+ UIStringCollection: 带集合个数改变事件的字符串集合类+ UIDataGridViewFooter: 增加DataGridView页脚,可做统计显示* UIBreadcrumb, UICheckBoxGroup, UIRadioButtonGroup: 更改列表项为UIObjectCollection* UIScrollingText: 增加属性可设置双击暂停滚动* UIEditForm: 动态生成表单,增加校验方法* UIDoubleUpDown, UIIntegerUpDown: 将双击编辑更改为单机编辑并选中* IFrame: 增加RemovePage接口* UIMessageDialog,UIMessageBox: 增加TopMost参数* UIBarChart: 修改了一个显示负值的Bug* UIForm: 加了个属性AllowAddControlOnTitle,允许在标题栏放置控件* UICombobox: 解决鼠标下拉选择,触发SelectedIndexChanged两次的问题* UISwitch: 更新Active状态改变时触发ValueChanged事件* UIDataGridView: 设置数据行头部颜色* UIEditForm: 代码生成增加Switch类型,增加Combobox类型* UICheckBox,UIRadioButton: 增加默认事件CheckedChanged* UIProcessBar: 可设置显示进度条小数个数* 等待提示框: 更新等待时间短时无法关闭等待窗体的问题* DirEx: 增加一个文件夹选择框* UITextBox: 增加ShowScrollBar属性,单独控制垂直滚动条* UITextBox: 不限制高度为根据字体计算,可进行调整* UITextBox: 解决多行输入时不能输入回车的问题* UITextBox: 修改文字可以居中显示* UIDatePicker,UIDateTimePicker: 增加ShowToday显示今日属性* UILineChart: 有右键菜单时,取消恢复上次缩放,可在右键菜单增加节点,调用ZoomBack()方法

+ UIMarkLabel: 增加带颜色标签的Label+ UIRoundProcess: 圆形滚动条+ UIBreadcrumb: 增加面包屑导航+ UILedLabel: 增加Led标签* UIHeaderButton: 在工具箱中显示* UILineChart: 支持拖拽选取放大* UIDateTimePicker: 修复下拉选择日期后关闭的Bug* UINavMenu: 增加设置二级菜单底色* UIColorPicker: 增加单击事件以选中颜色* UITitlePage: 增加ShowTitle可控制是否显示标题* UINavBar: 增加可设置背景图片* 框架增加IFrame接口,方便页面跳转* UIDataGridView: 修改垂直滚动条和原版一致,并增加翻页方式滚动* UIPagination: 修正因两次查询数量相等而引起的不刷新* UIHeaderButton: 增加字体图标背景时鼠标移上背景色

2021-05-20 V3.0.4

2021-04-11 V3.0.2

更新日志

21 / 100

Page 22: GVP - gitee.com

* UITabControl: 修改第一个TabPage关不掉的Bug* UIDataGridView: 增加EnterAsTab属性,编辑输入时,用Enter键代替Tab键跳到下一个单元格* UILineChart: 增加鼠标框选放大,可多次放大,右键点击恢复一次,双击恢复* UITitlePanel: 修复OnMouseMove事件* UITrackBar: 增加垂直显示方式* UIFlowLayoutPanel: 修改了一处因为其加入控件大小发生变化而引起的滚动条出错

+ UIForm: 标题栏增加扩展按钮+ UIHeaderButton: 新增大图标的导航按钮+ 新增UIComboboxEx,从Combobox原生控件继承,以方便做查询过滤等操作* UIForm: 修正不显示标题栏时,标题栏位置可放置控件* UIListBox: 增加一些原有属性* FCombobox: 增加数据绑定Demo* UICombobox: 更改索引改变事件的多次触发* UIForm: 修改一处Icon图片显示的问题* UIEditForm: 修改通过代码生成窗体控件的TabIndex* UIDatePicker,UIDateTimePicker: 将日期选择控件的最小值调整为1900年* UIHeaderButton: 将其命名空间从Sunny.UI.Control改为Sunny.UI

+ 同时兼容.Net Framework 4.0+:、.Net Core3.1、.Net 5 框架* 更新UIMessageTip* UIForm: 增加ShowTitleIcon用来显示标题栏图标,与ShowIcon分开* UINavBar: 增加下拉菜单可设置自动高度或者固定高度,可显示ImageList绑定* UIDataGridView更新行头和列头的选中颜色

* V2.2 .Net Framewok 4.0最终版本* V3.0 开始将同时兼容.Net Framework 4.0+:、.Net Core3.1、.Net 5 框架

+ UIWaitForm: 等待窗体+ UIComboTreeView: 新增下拉框TreeView+ UIMessageForm: 消息提示框增加黑色半透明遮罩层+ Win32API: 新增Win32API函数+ UJsonConfig: 不引用第三方控件,用.Net自带的序列化实现Json,增加Json文件配置类+ UIDataGridViewForm: 增加了一个表格模板基类* UIDataGridView: 修改DataSource赋值后Column改变引起的水平滚动条错误* UIDoubleUpDown,UIIntegerUpDown: 增加双击可编辑数值* UINavMenu: 增加选中后图标的背景色或应用选中图片索引* 页面框架增加页面内跳转方法* 日期、时间选择框增加CanEmpty,输入可为空

+ UILineChart: 完成曲线图表+ UIScale: 增加坐标轴刻度计算类+ UIFlowLayoutPanel: 增加+ UIBarChartEx: 增加了一个新的柱状图类型,序列个数可以不相等+ UDateTimeInt64: 增加DateTimeInt64类,时间整形互转类* UIForm: 增加窗体阴影* UIMainFrame: 页面框架增加Selecting事件,在页面切换时执行该事件* UITextBox: 解决Anchor包含Top、Bottom时,在窗体最小化后恢复时高度变化* UISwitch: 增加长方形形状开关,取消长宽比锁定* UITreeView: 背景色可改,设置FillColor,以及SystemCustomMode = true* UIDataGridView: 解决水平滚动条在有列冻结时出错的问题

+ 新增双主键线程安全字典,分组线程安全字典+ UIHorScrollBarEx,UIVerScrollBarEx: 重写了两个滚动条

2021-02-26 V3.0.1

2021-01-26 V3.0.0

2021-01-05 V2.2.10

2020-12-20 V2.2.9

2020-10-12 V2.2.8

2020-09-17 V2.2.7

更新日志

22 / 100

Page 23: GVP - gitee.com

* UIForm: 恢复了WindowState,增加了窗体可拉拽调整大小* 增加控件属性显示值及Sunny UI分类* UIDateTimePicker,UITimePicker: 更改滚轮选择时间的方向* UIButton: Tips颜色可设置* UIChart: 增加图表的边框线颜色设置* UITextBox: 增加FocusedSelectAll属性,激活时全选* UINavBar: 增加节点的Image绘制* UIDataGridView: 调整水平滚动条* UIButton: 添加'是否启用双击事件'属性,解决连续点击效率问题* UIDataGridView: 更新了水平和垂直滚动条的显示,优化滚动效果* UIBbutton: 空格键按下press背景效果* UIListBox优化滚轮快速滚动流畅性* UIBarChart: 可设置柱状图最小宽度* UIIntegerUpDown, UIDoubleUpDown: 增加字体调整* UITabControl: 标题垂直居中* UITreeView: 更新可设置背景色* UIDatePicker,UITimePicker,UIDateTimePicker: 可编辑输入,日期范围控制* UIDatePicker: 更改日期范围最小值和最大值* UITitlePanel: 更新大小调整后的按钮位置

+ UIPagination: 新增分页控件+ UIToolTip: 新增控件,可修改字体+ UIHorScrollBar: 新增水平滚动条+ UIWaitingBar: 新增等待滚动条控件* UIDataGridView: 重绘水平滚动条,更新默认设置为原生控件设置* UITitlePanel: 增加可收缩选项* UIPieChart,UIBarChart: 增加序列自定义颜色* UISymbolButton: 增加Image属性,增加图片和文字的摆放位置* UIButton: 增加Selected及选中颜色配置* UIForm: 支持点击窗体任务栏图标,可以进行最小化* UIForm: 增加标题栏ICON图标绘制* UIDateTimePicker: 重写下拉窗体,缩短创建时间* UITreeView: 全部重写,增加圆角,CheckBoxes等* UIDatePicker: 重写下拉窗体,缩短创建时间* UICheckBoxGroup,UIRadioButtonGroup: 可以设置初始选中值* UILedBulb: 边缘平滑* UIForm: 仿照QQ,重绘标题栏按钮

+ UIDoughnutChart: 环状图+ UILoginForm: 登录窗体+ UIScrollingText: 滚动文字+ UIBarChart: 柱状图+ UIPieChart: 饼状图+ UIRichTextBox: 富文本框+ UIBattery: 电池电量显示+ UIDatetimePicker: 日期时间选择框+ UIColorPicker: 颜色选择框+ UITimePicker: 时间选择框+ UIMessageTipHelper: 增加MessageTip扩展方法* UIComboBox: 增加数据绑定* 页面框架支持通过PageIndex和PageGuid关联* UITextBox: 增加Multiline属性,增加滚动条* UITabControl: 新增关闭按钮,重绘左右移动按钮* UIForm: 更新标题移动、双击最大化/正常、到顶最大化、最大化后拖拽正常* UINavMenu: 增加字体图标显示* 字体图标字体调整从资源文件中加载字体,不用另存为文件* UIListBox 增加跟随鼠标滑过高亮* UIDatePicker: 重写日期选择界面* UIButton: 增加ShowFocusLine,可获得焦点并显示

2020-07-30 V2.2.6

2020-06-29 V2.2.5

2020.05.05 V2.2.5

更新日志

23 / 100

Page 24: GVP - gitee.com

+ 增加页面框架+ 增加下拉框窗体,进度提升窗体+ UITreeView

* 更新主题风格类,各控件主题颜色调用不交叉,便于新增主题+ 更新Sunny.Demo程序+ 增加UIDataGridView,基于DataGridView增强、美化- UIGrid效率待改,暂时隐藏

+ UICheckBoxGroup,UIRadioButtonGroup

+ 新增UIGrid- 继承DataGridView更改主题风格的UIGridView

* Bug修复

* 增加文件说明,为开源做准备+ 增加Office主题风格

+ 增加Element主题风格

+ 增加自定义控件

+ 增加工具类、扩展类

2020.04.25 V2.2.4

2020.04.19 V2.2.3

2020.04.11 V2.2.2

2020.02.15 V2.2.1

2020.01.01 V2.2.0

2019.10.01 V2.1.0

2019.03.12 V2.0.0

2012.03.31 V1.0.0

更新日志

24 / 100

Page 25: GVP - gitee.com

从码云下载下来的项目,编译直接出错嘛,怎么办? 兄弟,先把码云项目下面的Readme.md仔细看看: SunnyUI.Net, 是基于.Net Framework4.0+、.Net 5、.Net 6 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。 源码编译环境: VS2022,V3.0.9增加了.Net6的支持,所以编译需要VS2022。安装.NetFramework4.0目标包的方法见:https://www.cnblogs.com/yhuse/p/15536393.html动态库应用环境: VS2010及以上,应用开发时直接引用Dll,.Net Framework 4.0及以上(不包括.Net Framework 4 Client Profile)都可以。未识别TargetFramework值“net5.0-windows”,就是因为VS版本低了,.Net5只有VS2019 16.8+以上才能运行

未识别TargetFramework值“net6.0-windows”,就是因为VS版本低了,.Net6只有VS2022 17.0+以上才能运行

打开源码,显示依赖项都是感叹号

有可能是因为网络原因,连不上Nuget服务器,通过设置Nuget源为国内源即可。 Nuget包管理器,设置程序包源:https://nuget.cdn.azure.cn/v3/index.json

界面的一些小图标的数字代号,是什么意思啊?

常见问题

常见问题

25 / 100

Page 26: GVP - gitee.com

对,就是图上框框里的图标和魔法数字,其实用的是WEB开发常见的字体图标,详见介绍: 字体图标 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739927&doc_id=1022550

为什么有些控件,我改了颜色,编辑时的界面显示了,然后一编译运行,颜色就变了? 因为SunnyUI是带主题风格的,有统一的主题风格控件

常见问题

26 / 100

Page 27: GVP - gitee.com

UISytleManager来控制主题颜色。 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550 所以你自己改的颜色在运行时被主题颜色覆盖了。 那有同学要问了,我就是要自己设置颜色,有没有方法呢? 有的,SunnyUI也帮你考虑了。

就是更改颜色后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

控件属性那么多,SunnyUI到底怎么用呢? 具体控件怎么用,主要还是看控件的属性,除了控件的原生属性外 SunnyUI已经将添加的属性进行了

分类,分类的标题就是SunnyUI 点击控件分类,选择SunnyUI类目下的属性,在页脚会有属性的说明。

常见问题

27 / 100

Page 28: GVP - gitee.com

为什么继承的窗体,上面有小锁,能解开吗,还有就是继承的窗体,有些控件属性都设置不了,怎么办? 首先得了解窗体继承的概念,和类的继承是差不多的,窗体上有小锁的其实就是类似于类继承中父类的某个Private属性 为了保证继承窗体的UI设计,上面的某些控件是不让修改和移动的,所以有锁。 在使用时,父窗体一般都将其所用的控件的属性和事件进行了封装,可以正常使用。 举例:

继承的登录窗体的登录按钮有锁,

但其点击事件已封装到父类的事件

为什么运行时的界面显示比设计期的大? 设计期: 运行期:

引起界面放大的原因主要又两个,一是因为界面跟随字体放大,二是界面跟随屏幕的DPI缩放引起的。

1. 因为显示的高分屏,然后操作系统的设置了字体缩放引起的。窗体默认的AutoScaleMode = Font,控件会因为高分屏自动缩放。 解决方法:设

常见问题

28 / 100

Page 29: GVP - gitee.com

置窗体、用户控件的AutoScaleMode = None

2. 设置app.manifest的dpiAware为true

<application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware> </windowsSettings></application>

3. 上述两步能解决窗体或者控件的缩放,但是DPI缩放时,字体在有些操作系统下并未跟随缩放。 在保证编译时DPI缩放为100% ,参照Demo的FMain,将StyleManager的DPIScale设置为True。

4. 上面的三个都设置完了,还变大,我也没辙了,换WPF吧,哈哈!~

工具箱找不到UILogo控件,怎么用? UILogo是为SunnyUI定制的,未加入工具箱,有需要的在其位置放置一张图片即可。

框架页面切换时,每次要重新刷新页面的解决方法? 参考Demo的FButton.cs放在 [窗体Load、重载OnLoad、重载Init] 的内容每次页面切换都会执行。这三个选一个用就行了。

把控件从工具箱往界面上拖到时候的解决方法如图所示

常见问题

29 / 100

Page 30: GVP - gitee.com

原因是工具箱里的控件和项目引用的控件的版本不一致解决方法是把工具箱里的控件删除,重建添加,然后再拖放到窗体。

高清屏下字体模糊的解决方法今天就遇到了之前遇到过的一个问题,那就是WinForm在高分辨率下界面模糊。我的开发环境是Windows10 64位和VS2010,电脑屏幕分辨率为1920*1080,采用的是WinForm程序设计方法开发。在程序运行时遇到了这样一个问题,在VS设计的很清晰的菜单和界面,运行的时候菜单和控件上字体变得很模糊,界面大小也发生了变化。于是上网寻求解决办法,网友给出的解决方案有以下3种。1、这里是列表文本WinForm对高分屏的支持不好,用WPF程序设计可以解决该问题。(这是一个可行的办法,但是短期内较好的掌握WPF,并用WPF技术重现实现软件不太现实)2、更改窗体的AutoScaleMode属性为Font,并在窗体的构造函数中增加两行代码调整窗体上字体的大小。本人反复尝试,该方法行不通。3、更改程序的配置文件,在里面添加几行代码,使程序运行时自动检测屏幕分辨率,在高分屏时禁用系统缩放。第三种方案的解决思路是正确的,就是要检测屏幕的分辨率,高分屏时禁用系统的缩放,因为现在Win10 高分屏默认字体放大125,这样会导致我们在程序中设计好的界面字体模糊。具体步骤:1、选择当前项目,单击鼠标右键,选择【添加】|【类】;2、选择【应用程序清单文件】;3、打开刚才建立的清单文件,添加下面的代码 4、保存运行,发现修复了界面模糊问题。

<application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> </windowsSettings></application>

PS:有时候按照上面步骤可能不成功,关掉程序重新打开运行后发现分辨率已协调,亲测有效。另外还是建议设置窗体、用户控件的AutoScaleMode = None

SunnyUI.dll 中没有可放置在工具箱上的组件。 请检查是否项目的.NetFramework环境为:.Net Framework 4 Client Profile

常见问题

30 / 100

Page 31: GVP - gitee.com

动态库应用环境:VS2010及以上 ,.Net Framework 4.0及以上(不包括.Net Framework 4 Client Profile)

.Net5、.Net6的Winform编辑器相关问题UINavBar报错

Symbol没有右侧的点击按钮

可参考 https://github.com/dotnet/winforms/issues/6193 建议将项目的运行环境换成.NetFramework。

未能加载程序集

VS提醒的这么明确,少啥加啥呗,一共两个文件:最好的做法是从Nuget引用SunnyUI或者直接引用已经编译好两个的Dll(SunnyUI.dll,SunnyUI.Common.dll)有时候VS也会抽风,明明已经引用类两个dll,还是提示少引用。那就把这两个引用都删除,再重新引用。

常见问题

31 / 100

Page 32: GVP - gitee.com

1、Nuget安装 Nuget安装是Visual Studio引用控件包最方便快捷的方法。

安装方法一:通过PM命令安装: PM> Install-Package SunnyUI

安装方法二:通过Nuget包管理器搜索SunnyUI安装:

2、下载安装 打开SunnyUI的码云地址:https://gitee.com/yhuse/SunnyUI

点击“克隆/下载”,点击“下载ZIP”,根据提示下载SunnyUI。

下载yhuse-SunnyUI-master.zip,然后解压,直接引用已经编译好的dll文件, 路径为SunnyUI\SunnyUI.Demo\Bin\SunnyUI.dll,SunnyUI\SunnyUI.Demo\Bin\SunnyUI.Common.dll,这两个项目都必须引用。再说一句,还是推荐nuget引用。

安装

安装

32 / 100

Page 33: GVP - gitee.com

新建Winform项目或者打开您已有的Winform项目,选择窗体,显示窗体设计器界面,

点击“视图”-“工具箱”,显示工具箱,如下图:

在工具箱,点击鼠标右键,添加选项卡

安装

33 / 100

Page 34: GVP - gitee.com

输入SunnyUI

在工具箱中选中选中SunnyUI选项卡。

安装方法一: 根据提示“此组中没有可用的控件。将某项拖至此文本可将其添加到工具箱”, 拖动SunnyUI\SunnyUI.Demo\Bin\SunnyUI.dll到提

示文字,会自动安装SunnyUI控件。

安装

34 / 100

Page 35: GVP - gitee.com

安装方法二: 点击鼠标右键,选择项

在“.NET Framework 组件”页面,点击“浏览”,选择SunnyUI\SunnyUI.Demo\Bin\SunnyUI.dll

安装

35 / 100

Page 36: GVP - gitee.com

点击确定按钮,将SunnyUI组件增加到选项卡

好的,安装完成了,开始使用SunnyUI控件吧!~

安装

36 / 100

Page 37: GVP - gitee.com

1、Color 色彩 SunnyUI为了避免视觉传达差异,使用一套特定的调色板来规定颜色,为你所搭建的产品提供一致的外观视觉感受。主要颜色参照Element(https://element.eleme.cn/)

主色 SunnyUI主要品牌颜色是鲜艳、友好的蓝色。

辅助色 除了主色外的场景色,需要在不同的场景中使用(例如红色表示危险的操作)。

中性色 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。

2、Rect边框 我们对边框进行统一规范,可用于按钮、卡片、弹窗等组件里。

主要属性如下:

RectColor:边框颜色 RectDisableColor:控件不可用时边框颜色 RectSides:边框显示方向 无:不显示边框 全部:显示全部边框 顶:显示顶部边框 底:显示底部边框 左:显示左侧边框 右:显示右侧边框 注:边框显示和圆角设置相关,如果一侧的边框两端端点为圆角,则此边框必定显示。

3、Radius圆角 我们提供了以下几种圆角样式,以供选择。默认圆角大小为5px。

主要属性如下:

主题

主题

37 / 100

Page 38: GVP - gitee.com

Radius:圆角大小 RadiusSides:显示四个角圆角的显示与否

圆角不显示

默认圆角大小为5px

圆角大小与控件高度相等时,显示大圆角

可通过四个角圆角的设置,对控件组合显示

4、Font字体 默认字体为:微软雅黑, 12pt 注:微软雅黑为Windows操作系统字体,如操作系统没有请自行安装,SunnyUI不包含微软雅黑字体。 SunnyUI引用操作系统的微软雅黑字体也仅限于屏幕显示,此项功能微软已经取得授权,用户其他操作与SunnyUI无关。如需制作宣传页、广告等请自行取得微软雅黑授权。

5、Style主题 SunnyUI包含 Element 风格主题 11 个,DotNetBar 主题 3 个,其他主题 2 个,包含主题管理组件 UIStyleManager,可自由切换主题。

UIStyleManager 参考SunnyUI.Demo.exe,将UIStyleManager放置在主窗体上,通过选择UIStyleManager的属性Style,或者通过代码设置统一主题风格。 UIStyleManager.Style = style;

Style主要属性如下:

Style:设置主题风格 StyleCustomMode:是否为自定义主题,设置为False时使用UIStyleManager提供的统一主题风格,设置为Ture时可手动调整控件配色,不受UIStyleManager约束。

UIStyle.Blue

主题

38 / 100

Page 39: GVP - gitee.com

UIStyle.Green

主题

39 / 100

Page 40: GVP - gitee.com

UIStyle.Orange

主题

40 / 100

Page 41: GVP - gitee.com

UIStyle.Red

主题

41 / 100

Page 42: GVP - gitee.com

UIStyle.Gray

主题

42 / 100

Page 43: GVP - gitee.com

UIStyle.White

主题

43 / 100

Page 44: GVP - gitee.com

UIStyle.DarkBlue

主题

44 / 100

Page 45: GVP - gitee.com

UIStyle.Black

主题

45 / 100

Page 46: GVP - gitee.com

UIStyle.Office2010Blue

主题

46 / 100

Page 47: GVP - gitee.com

UIStyle.Office2010Silver

主题

47 / 100

Page 48: GVP - gitee.com

UIStyle.Office2010Black

主题

48 / 100

Page 49: GVP - gitee.com

主题

49 / 100

Page 50: GVP - gitee.com

SunnyUI控件内部默认使用中文,若希望使用其他语言,则需要进行多语言设置。 本页面所描述的国际化是针对SunnyUI内的按钮、标题等中文资源的国际化 如您开发的系统需要做国际化请自行开发。

常用的按钮、标题、提示等文字已经设置为静态字符串变量,存于ULocalize.cs文件中。

public static class UILocalize{ public static string InfoTitle = "提示"; public static string SuccessTitle = "正确"; public static string WarningTitle = "警告"; public static string ErrorTitle = "错误"; public static string AskTitle = "提示"; public static string InputTitle = "输入"; public static string CloseAll = "全部关闭"; public static string OK = "确定"; public static string Cancel = "取消"; public static string GridNoData = "[ 无数据 ]"; public static string GridDataLoading = "数据加载中 ......"; public static string GridDataSourceException = "数据源必须为DataTable或者List";}

可以重写UILocalize类静态变量值来改变语言。 UILocalizeHelper类已经包含中文和英文的默认配置函数:

public static class UILocalizeHelper { public static void SetEN() { UILocalize.InfoTitle = "Info"; UILocalize.SuccessTitle = "Success"; UILocalize.WarningTitle = "Warning"; UILocalize.ErrorTitle = "Error"; UILocalize.AskTitle = "Query"; UILocalize.InputTitle = "Input"; UILocalize.CloseAll = "Close all"; UILocalize.OK = "OK"; UILocalize.Cancel = "Cancel"; UILocalize.GridNoData = "[ No data ]"; UILocalize.GridDataLoading = "Data loading ......"; UILocalize.GridDataSourceException = "The data source must be DataTable or List"; }

public static void SetCH() { UILocalize.InfoTitle = "提示"; UILocalize.SuccessTitle = "正确"; UILocalize.WarningTitle = "警告"; UILocalize.ErrorTitle = "错误"; UILocalize.AskTitle = "提示"; UILocalize.InputTitle = "输入"; UILocalize.CloseAll = "全部关闭"; UILocalize.OK = "确定"; UILocalize.Cancel = "取消"; UILocalize.GridNoData = "[ 无数据 ]"; UILocalize.GridDataLoading = "数据加载中 ......"; UILocalize.GridDataSourceException = "数据源必须为DataTable或者List"; } }

如需要其他语言,则在自己程序里写函数更新UILocalize类静态变量值即可。 显示效果如下: 中文:

国际化

国际化

50 / 100

Page 51: GVP - gitee.com

英文:

国际化

51 / 100

Page 52: GVP - gitee.com

SunnyUI的字体图标目前主要有两个:

FontAwesome.ttf V4.7 https://github.com/FortAwesome/Font-Awesome/tree/v4.7.0 国内网站可参考:http://www.fontawesome.com.cn/faicons/

ElegantIcons.ttf V1.0 https://www.elegantthemes.com/blog/resources/elegant-icon-font

这两个都是目前Web开发常用的字体图标,SunnyUI经过精心研发,将他们用于.Net Winform开发,省去了到处找图标的麻烦。 SunnyUI常用字体图标的控件为UISymbolButton和UISymbolLabel:

字体图标

字体图标

52 / 100

Page 53: GVP - gitee.com

字体图标的选择方法是设置UISymbolButton和UISymbolLabel的以下属性: Symbol:字体图标(int) SymbolSize:字体图标的大小(int)

点击Symbol右侧的按钮:

鼠标移到图标上,显示的数字为Symbol字符,点击图标即可设置UISymbolButton的图标。

另外SunnyUI还有多处用到了字体图标。 例如:

字体图标

53 / 100

Page 54: GVP - gitee.com

左侧边栏的UINavMenu的图标,上侧UINavBar的图标,UICombobox的下拉图标,UIDatePicker的日期选择图标等等。

字体图标

54 / 100

Page 55: GVP - gitee.com

UIAvatar 头像

默认属性:Symbol

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

AvatarSize 头像大小 int 60

Icon 显示方式 UIIcon Symbol

Symbol 字体图标 int 61452

SymbolColor 图标颜色 Color -

SymbolSize 字体图标大小 int 45

Text 获取或设置显示的文本 string -

Image 图片 Image -

Shape 显示形状 UIShape Circle

OffsetX 水平偏移 int 0

OffsetY 垂直偏移 int 0

ForeColor 字体颜色 Color -

FillColor 填充颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

字体图标 设置Symbol属性 点击Symbol右侧的按钮:

控件

UIAvatar

控件

55 / 100

Page 56: GVP - gitee.com

[原创][开源] SunnyUI.Net 字体图标https://www.cnblogs.com/yhuse/p/SunnyUI_FontImage.html

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

显示方式 设置Icon属性 显示方式:图片(Image)、字体图标(Symbol)、文字(Text)

显示形状 设置Shape属性 圆形(Circle): 方形(Square):

控件

56 / 100

Page 57: GVP - gitee.com

UIBattery 电池电量图标

默认属性:Power

默认事件:-

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Power 电量 int 100

ForeColor 默认电量颜色 Color -

MultiColor 根据电量显示多种颜色 bool true

ColorEmpty 电量为空颜色 Color -

ColorDanger 电量少时颜色 Color -

ColorSafe 电量安全颜色 Color -

FillColor 填充颜色 Color -

SymbolSize 图标大小 int 45

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

默认电量颜色 MultiColor设置为false时,显示同一色

多种电量颜色 MultiColor设置为true时,根据电量显示多种颜色 依次为:电量为空颜色,电量少时颜色,电量安全颜色,电量安全颜色,电量安全颜色

UIBattery

控件

57 / 100

Page 58: GVP - gitee.com

UIBreadcrumb 面包屑导航条。

默认属性:ItemIndex

默认事件:ItemIndexChanged

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Items 列表项 ObjectCollection -

ItemIndex 当前节点索引 int 0

ItemWidth 当前节点宽度索引 int 120

Interval 节点间隔 int 1

ForeColor 字体颜色 Color -

SelectedColor 已选节点颜色 Color -

UnSelectedColor 未选节点颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

示例

UIBreadcrumb

控件

58 / 100

Page 59: GVP - gitee.com

UIButton 常用的操作按钮。

默认属性:Text

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

RadiusSides 圆角显示位置 UICornerRadiusSides All

Radius 圆角角度 int 5

RectSides 边框显示位置 ToolStripStatusLabelBorderSides All

TextAlign 文字对齐方向 ContentAlignment MiddleCenter

Selected 是否选中 bool false

FillColor 填充颜色 Color -

RectColor 边框颜色 Color -

ForeColor 字体颜色 Color -

FillDisableColor 不可用时填充颜色 Color -

RectDisableColor 不可用时边框颜色 Color -

ForeDisableColor 不可用时字体颜色 Color -

FillHoverColor 鼠标移上时填充颜色 Color -

RectHoverColor 鼠标移上时边框颜色 Color -

ForeHoverColor 鼠标移上时字体颜色 Color -

FillPressColor 鼠标按下时填充颜色 Color -

RectPressColor 鼠标按下时边框颜色 Color -

ForePressColor 鼠标按下时字体颜色 Color -

FillSelectedColor 选中时填充颜色 Color -

ForeSelectedColor 选中时字体颜色 Color -

RectSelectedColor 选中时边框颜色 Color -

DialogResult 指定标识符以指示对话框的返回值 DialogResult None

ShowFocusLine 显示激活时边框线 bool false

ShowTips 是否显示角标 bool false

TipsText 角标文字 string -

TipsFont 角标文字字体 Font -

TipsColor 角标文字颜色 Color Red

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

UseDoubleClick 是否启用双击事件 bool false

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

UIButton

控件

59 / 100

Page 60: GVP - gitee.com

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

圆角按钮 设置Radius和高度一样,例如Size:100,35 Radius:35

控件

60 / 100

Page 61: GVP - gitee.com

UICheckBox 复选框。

默认属性:Checked

默认事件:CheckedChanged

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Checked 是否选中 bool false

Text 获取或设置显示的文本 string -

AutoSize 自动大小 bool true

ImageSize 图标大小 int 16

ImageInterval 图标与文字之间间隔 int 3

ReadOnly 是否只读 bool false

ForeColor 字体颜色 Color -

CheckBoxColor 填充颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

事件 CheckedChanged public event EventHandler CheckedChanged; 参数sender:当前控件

ValueChanged public delegate void OnValueChanged(object sender, bool value); 参数sender:当前控件 参数value:选中值,Checked

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

示例

UICheckBox

控件

61 / 100

Page 62: GVP - gitee.com

UICheckBoxGroup 多选框组。

默认属性:Items

默认事件:ValueChanged

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Items 获取该多选框组中项的集合 ObjectCollection -

Text 获取或设置显示的文本 string -

ColumnCount 显示列的个数 int 1

ColumnInterval 显示项列之间的间隔 int 0

RowInterval 显示项行之间的间隔 int 0

ItemSize 显示项的大小 Size 150, 30

StartPos 显示项的起始位置 Point 12, 12

TitleTop 标题高度 int 16

TitleInterval 标题显示间隔 int 10

TitleAlignment 文字显示位置 HorizontalAlignment Left

RadiusSides 圆角显示位置 UICornerRadiusSides All

Radius 圆角角度 int 5

RectSides 边框显示位置 ToolStripStatusLabelBorderSides All

TextAlign 文字对齐方向 ContentAlignment MiddleCenter

FillColor 填充颜色 Color -

RectColor 边框颜色 Color -

ForeColor 字体颜色 Color -

FillDisableColor 不可用时填充颜色 Color -

RectDisableColor 不可用时边框颜色 Color -

ForeDisableColor 不可用时字体颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

事件 ValueChanged public delegate void OnValueChanged(object sender, int index, string text, bool isChecked); 参数sender:当前控件 参数index:选中索引,SelectedIndex 参数text:选中项的文本 参数isChecked:选中项是否选中

增加编辑项 选择控件属性Items,点击打开,在其中增加编辑项

UICheckBoxGroup

控件

62 / 100

Page 63: GVP - gitee.com

多列显示 设置ColumnCount=2,显示两列

函数方法 全选: SelectAll(); 全不选: UnSelectAll() ; 反选: ReverseSelected(); 设置选择项: SelectedIndexes = new List() { 2, 4 }; 清空: Clear(); 选中索引列表:SelectedIndexes 选中项列表:SelectedItems

控件

63 / 100

Page 64: GVP - gitee.com

UIGroupBox 组框。

默认属性:Text

默认事件:

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

TitleTop 标题高度 int 16

TitleInterval 标题显示间隔 int 10

TitleAlignment 文字显示位置 HorizontalAlignment Left

RadiusSides 圆角显示位置 UICornerRadiusSides All

Radius 圆角角度 int 5

RectSides 边框显示位置 ToolStripStatusLabelBorderSides All

TextAlign 文字对齐方向 ContentAlignment MiddleCenter

FillColor 填充颜色 Color -

RectColor 边框颜色 Color -

ForeColor 字体颜色 Color -

FillDisableColor 不可用时填充颜色 Color -

RectDisableColor 不可用时边框颜色 Color -

ForeDisableColor 不可用时字体颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

示例

UIGroupBox

控件

64 / 100

Page 65: GVP - gitee.com

UILabel 标签。

默认属性:Text

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

ForeColor 字体颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

示例

UILabel

控件

65 / 100

Page 66: GVP - gitee.com

UILedDisplay LED显示屏。 注:仅支持英文、数字、标点符号、希腊字母,不支持中文

默认属性:Text

默认事件:-

属性列表

属性 说明 类型 默认值

Text 获取或设置显示的文本 string -

CharCount 显示字符个数 int 10

BorderColor 边框颜色 Color -

BorderInColor 内线颜色 Color -

LedBackColor LED背景色 Color -

BorderWidth 边框宽度 int 1

BorderInWidth 内线宽度 int 1

IntervalIn LED亮块间距 int 1

IntervalOn LED亮块大小 int 2

IntervalH 左右边距 int 2

IntervalV 上下边距 int 5

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

控件宽度 因为本控件模拟的时一个LED点阵显示屏,LED点阵显示屏宽度由可显示字符个数决定。 所以需要调整控件的宽度,不是设置Width属性,而是设置CharCount属性。

示例

UILedDisplay

控件

66 / 100

Page 67: GVP - gitee.com

UILedLabel LED标签。 注:仅支持英文、数字、标点符号、希腊字母,不支持中文

默认属性:Text

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

BackColor 背景颜色 Color -

ForeColor 字体颜色 Color -

IntervalIn LED亮块间距 int 1

IntervalOn LED亮块大小 int 2

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

示例

UILedLabel

控件

67 / 100

Page 68: GVP - gitee.com

UILedStopwatch LED计时器。

默认属性:Text

默认事件:TimerTick

属性列表

属性 说明 类型 默认值

Text 获取或设置显示的文本 string -

CharCount 显示字符个数 int 10

ShowType 显示方式 TimeShowType -

Active 是否开始工作 bool false

BorderColor 边框颜色 Color -

BorderInColor 内线颜色 Color -

LedBackColor LED背景色 Color -

BorderWidth 边框宽度 int 1

BorderInWidth 内线宽度 int 1

IntervalIn LED亮块间距 int 1

IntervalOn LED亮块大小 int 2

IntervalH 左右边距 int 2

IntervalV 上下边距 int 5

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

TimeSpan 开始计时后用去的时间 TimeSpan -

IsWorking 是否开始工作 bool false

控件宽度 因为本控件模拟的时一个LED点阵显示屏,LED点阵显示屏宽度由可显示字符个数决定。 所以需要调整控件的宽度,不是设置Width属性,而是设置CharCount属性。

事件 TimerTick:当定时器启动后,Text变化时触发一次

示例

UILedStopwatch

控件

68 / 100

Page 69: GVP - gitee.com

UILinkLabel 表示可显示超链接的标签控件。

默认属性:Text

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

ForeColor 字体颜色 Color -

ActiveLinkColor 获取或设置用来显示活动链接的颜色。 Color -

LinkColor 获取或设置显示普通链接时使用的颜色。 Color -

VisitedLinkColor 获取或设置当显示以前访问过的链接时所使用的颜色。 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

示例

UILinkLabel

控件

69 / 100

Page 70: GVP - gitee.com

UIMarkLabel 带颜色标签。

默认属性:Text

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

AutoSize 自动大小 bool true

ForeColor 字体颜色 Color -

MarkSize 标签大小 int 3

MarkPos 标签位置 UIMarkPos Left

MarkColor 标签颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

标签位置 标签有四个显示位置,左、右、下、上,见下图:

UIMarkLabel

控件

70 / 100

Page 71: GVP - gitee.com

UIPanel 面板。

默认属性:Text

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

TextAlignment 文字对齐方向 ContentAlignment MiddleCenter

RadiusSides 圆角显示位置 UICornerRadiusSides All

Radius 圆角角度 int 5

RectSides 边框显示位置 ToolStripStatusLabelBorderSides All

TextAlign 文字对齐方向 ContentAlignment MiddleCenter

FillColor 填充颜色 Color -

RectColor 边框颜色 Color -

ForeColor 字体颜色 Color -

FillDisableColor 不可用时填充颜色 Color -

RectDisableColor 不可用时边框颜色 Color -

ForeDisableColor 不可用时字体颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

示例

UIPanel

控件

71 / 100

Page 72: GVP - gitee.com

UIRadioButton 单选框。

默认属性:Checked

默认事件:CheckedChanged

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Checked 是否选中 bool false

Text 获取或设置显示的文本 string -

GroupIndex 分组编号 int 0

AutoSize 自动大小 bool true

ImageSize 图标大小 int 16

ImageInterval 图标与文字之间间隔 int 3

ReadOnly 是否只读 bool false

ForeColor 字体颜色 Color -

RadioButtonColor 填充颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

事件 CheckedChanged public event EventHandler CheckedChanged; 参数sender:当前控件

ValueChanged public delegate void OnValueChanged(object sender, bool value); 参数sender:当前控件 参数value:选中值,Checked

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

分组编号 在同一个容器中,多个UIRadioButton可以根据GroupIndex进行分组,同一个GroupIndex的只能选中一个

示例

UIRadioButton

控件

72 / 100

Page 73: GVP - gitee.com

UIRadioButtonGroup 单选框组。

默认属性:Items

默认事件:ValueChanged

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Items 获取该多选框组中项的集合 ObjectCollection -

Text 获取或设置显示的文本 string -

SelectedIndex 选中索引 int -1

ColumnCount 显示列的个数 int 1

ColumnInterval 显示项列之间的间隔 int 0

RowInterval 显示项行之间的间隔 int 0

ItemSize 显示项的大小 Size 150, 30

StartPos 显示项的起始位置 Point 12, 12

TitleTop 标题高度 int 16

TitleInterval 标题显示间隔 int 10

TitleAlignment 文字显示位置 HorizontalAlignment Left

RadiusSides 圆角显示位置 UICornerRadiusSides All

Radius 圆角角度 int 5

RectSides 边框显示位置 ToolStripStatusLabelBorderSides All

TextAlign 文字对齐方向 ContentAlignment MiddleCenter

FillColor 填充颜色 Color -

RectColor 边框颜色 Color -

ForeColor 字体颜色 Color -

FillDisableColor 不可用时填充颜色 Color -

RectDisableColor 不可用时边框颜色 Color -

ForeDisableColor 不可用时字体颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

事件 ValueChanged public delegate void OnValueChanged(object sender, int index, string text); 参数sender:当前控件 参数index:选中索引,SelectedIndex 参数text:选中项的文本

增加编辑项 选择控件属性Items,点击打开,在其中增加编辑项

UIRadioButtonGroup

控件

73 / 100

Page 74: GVP - gitee.com

多列显示 设置ColumnCount=3,显示两列

函数方法 全不选: SelectedNone() ; 设置选择项: SelectedIndex = 6; 清空: Clear();

控件

74 / 100

Page 75: GVP - gitee.com

UISwitch 开关。

默认属性:Active

默认事件:ValueChanged

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Active 是否打开 bool false

ActiveText 打开文字 string 开

InActiveText 关闭文字 string 关

ActiveColor 打开颜色 Color -

InActiveColor 关闭颜色 Color Silver

ButtonColor 填充颜色 Color White

SwitchShape 开关形状 UISwitchShape Round

ForeColor 字体颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

事件 ValueChanged public delegate void OnValueChanged(object sender, bool value); 参数sender:当前控件 参数value:选中值,active

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

开关状态 设置Active属性,状态切换通过ValueChanged输出

开关形状 SwitchShape:Round为圆角开关,Square为方角开关

UISwitch

控件

75 / 100

Page 76: GVP - gitee.com

UISymbolButton 字体图标按钮

默认属性:Text

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

RadiusSides 圆角显示位置 UICornerRadiusSides All

Radius 圆角角度 int 5

RectSides 边框显示位置 ToolStripStatusLabelBorderSides All

Symbol 字体图标 int 61452

SymbolSize 字体图标大小 int 24

Image 图片 Image -

ImageAlign 图片放置位置 ContentAlignment MiddleCenter

ImageInterval 图片文字间间隔 int 2

IsCircle 是否是圆形 bool false

CircleRectWidth 圆形边框大小 int 1

TextAlign 文字对齐方向 ContentAlignment MiddleCenter

Selected 是否选中 bool false

FillColor 填充颜色 Color -

RectColor 边框颜色 Color -

ForeColor 字体颜色 Color -

FillDisableColor 不可用时填充颜色 Color -

RectDisableColor 不可用时边框颜色 Color -

ForeDisableColor 不可用时字体颜色 Color -

FillHoverColor 鼠标移上时填充颜色 Color -

RectHoverColor 鼠标移上时边框颜色 Color -

ForeHoverColor 鼠标移上时字体颜色 Color -

FillPressColor 鼠标按下时填充颜色 Color -

RectPressColor 鼠标按下时边框颜色 Color -

ForePressColor 鼠标按下时字体颜色 Color -

FillSelectedColor 选中时填充颜色 Color -

ForeSelectedColor 选中时字体颜色 Color -

RectSelectedColor 选中时边框颜色 Color -

DialogResult 指定标识符以指示对话框的返回值 DialogResult None

ShowFocusLine 显示激活时边框线 bool false

ShowTips 是否显示角标 bool false

UISymbolButton

控件

76 / 100

Page 77: GVP - gitee.com

TipsText 角标文字 string -

TipsFont 角标文字字体 Font -

TipsColor 角标文字颜色 Color Red

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

UseDoubleClick 是否启用双击事件 bool false

字体图标 设置Symbol属性

点击Symbol右侧的按钮: [原创][开源] SunnyUI.Net 字体图标 https://www.cnblogs.com/yhuse/p/SunnyUI_FontImage.html

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

圆形按钮 设置IsCircle为true,可设置CircleRectWidth边框大小

按钮组 设置左侧按钮显示左边两个圆角(RadiusSides:LeftTop, LeftBottom), 设置中间的按钮(RadiusSides:None) 设置右侧按钮显示左边两个圆角(RadiusSides:RightTop, RightBottom)

自定义图片 设置Image属性

字体图标不居中显示 因为字体图标不是等宽和等高的,会存在不居中的现象 设置ImageAlign:TopLeft,然后设置Padding的Left和Top属性,例如5,5,0,0

控件

77 / 100

Page 78: GVP - gitee.com

UISymbolLabel 字体图标标签

默认属性:Text

默认事件:Click

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

AutoSize 自动大小 bool true

Symbol 字体图标 int 61452

SymbolColor 图标颜色 Color -

SymbolSize 字体图标大小 int 24

ImageInterval 图标和文字间间隔 int 2

TextAlign 文字对齐方向 ContentAlignment MiddleCenter

ForeColor 字体颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

字体图标 设置Symbol属性 点击Symbol右侧的按钮:

[原创][开源] SunnyUI.Net 字体图标https://www.cnblogs.com/yhuse/p/SunnyUI_FontImage.html

UISymbolLabel

控件

78 / 100

Page 79: GVP - gitee.com

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

控件

79 / 100

Page 80: GVP - gitee.com

UITitlePanel 带标题面板。

默认属性:Text

默认事件:

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

ShowCollapse 是否打开缩放按钮 bool false

Collapsed 是否缩放 bool false

TitleHeight 面板高度 int 35

TitleInterval 标题文字局左或者局右时与边框距离 int 10

TitleAlign 文字显示位置 HorizontalAlignment Center

RadiusSides 圆角显示位置 UICornerRadiusSides All

Radius 圆角角度 int 5

RectSides 边框显示位置 ToolStripStatusLabelBorderSides All

TextAlign 文字对齐方向 ContentAlignment MiddleCenter

TitleColor 标题颜色 Color -

FillColor 填充颜色 Color -

RectColor 边框颜色 Color -

ForeColor 字体颜色 Color -

FillDisableColor 不可用时填充颜色 Color -

RectDisableColor 不可用时边框颜色 Color -

ForeDisableColor 不可用时字体颜色 Color -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

Version 版本 string -

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

其他 标题栏高度内不可放置其他控件。

示例

UITitlePanel

控件

80 / 100

Page 81: GVP - gitee.com

UIForm 常用的窗体基类。

默认属性:Text

默认事件:Load

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Text 获取或设置显示的文本 string -

TextAlignment 文字对齐方式 StringAlignment -

AllowAddControlOnTitle 允许在标题栏放置控件 bool false

AllowShowTitle 允许显示标题栏 bool true

ShowIcon 是否显示窗体的标题栏图标 bool true

TitleHeight 标题栏高度 int 35

TitleColor 标题栏颜色 Color -

TitleForeColor 标题前景色(标题颜色) Color -

ExtendBox 显示扩展按钮 bool false

ExtendSymbol 扩展按钮字体图标 int 0

ExtendSymbolSize 扩展按钮字体图标大小 int 24

ExtendSymbolOffset 扩展按钮字体图标偏移量 Point 0, 0

ExtendMenu 扩展按钮菜单 UIContextMenuStrip -

ControlBox 是否显示窗体的控制按钮 bool true

MaximizeBox 是否显示窗体的最大化按钮 bool true

MinimizeBox 是否显示窗体的最小化按钮 bool true

RectColor 边框颜色 Color -

ForeColor 字体颜色 Color -

StickyBorderTime 设置或获取在显示器边缘停留的最大时间(ms) long 500

IsForbidAltF4 是否屏蔽Alt+F4 bool false

EscClose 使用Esc键关闭窗口 bool false

CloseAskString 关闭时提示文字 string

ShowFullScreen 是否以全屏模式进入最大化 bool false

ShowRadius 是否显示圆角 bool true

ShowRect 是否显示边框 bool true

ShowTitleIcon 显示标题栏图标 bool false

ShowDragStretch 显示边框可拖拽调整窗体大小 bool false

ShowShadow 是否显示阴影 bool false

Version 版本 string -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

窗体

UIForm

窗体

81 / 100

Page 82: GVP - gitee.com

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

创建窗体项目引用SunnyUI.dll和SunnyUI.Common.dll,或者从Nuget引用SunnyUI。 详见安装:https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3742036&doc_id=1022550新建窗体:

修改:把Form修改成UIForm,并且 using Sunny.UI;

这时切换到窗体,窗体已经变为UIForm:

窗体

82 / 100

Page 83: GVP - gitee.com

下一步的操作非常重要:把窗体的AutoScaleMode从Font设置为None,否则可能出现因为屏幕分辨率而导致的窗体变形。

拖拽调整窗体大小ShowDragStretch 设置为true,显示边框可拖拽调整窗体大小。

显示任务栏图标设置Icon,将ShowIcon设置为true,再打开ShowTitleIcon可显示窗体标题栏图标。

显示标题栏扩展按钮 ExtendBox设置为true,可在标题栏现有按钮最小化按钮的左边显示一个扩展按钮。扩展按钮的图标设置ExtendSymbol。ExtendMenu为扩展按钮点击的下拉菜单。

窗体

83 / 100

Page 84: GVP - gitee.com

UILoginForm 登录窗体基类。

默认属性:Text

默认事件:OnLogin

属性列表

属性 说明 类型 默认值

Style 主题样式 UIStyle Blue

StyleCustomMode 获取或设置可以自定义主题风格 bool false

Title 顶部标题 string -

SubText 底部文字描述 string -

LoginImage 背景图片 UILoginImage -

UserName 用户名 string -

Password 密码 string -

IsLogin 登录是否成功 bool -

Version 版本 string -

TagString 获取或设置包含有关控件的数据的对象字符串 string -

事件ButtonLoginClick:确定按钮点击事件,有此事件时不执行OnLogin。需要手动给IsLogin赋值。ButtonCancelClick:取消按钮点击事件。OnLogin:登录事件。ButtonLoginClick为空时才执行此时间,返回值为IsLogin。

主题风格 主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550

主题设置 设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True StyleCustomMode就是接受用户自定义颜色的意思。

创建窗体 项目引用SunnyUI.dll和SunnyUI.Common.dll,或者从Nuget引用SunnyUI。 详见安装:https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3742036&doc_id=1022550创建窗体:参考UIForm创建窗体 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=4098716&doc_id=1022550切记把窗体的AutoScaleMode从Font设置为None,否则可能出现因为屏幕分辨率而导致的窗体变形。

为什么继承的窗体,上面有小锁,能解开吗,还有就是继承的窗体,有些控件属性都设置不了,怎么办? 首先得了解窗体继承的概念,和类的继承是差不多的,窗体上有小锁的其实就是类似于类继承中父类的某个Private属性 为了保证继承窗体的UI设计,上面的某些控件是不让修改和移动的,所以有锁。 在使用时,父窗体一般都将其所用的控件的属性和事件进行了封装,可以正常使用。 举例:

UILoginForm

窗体

84 / 100

Page 85: GVP - gitee.com

继承的登录窗体的登录按钮有锁,

但其点击事件已封装到父类的事件。 需要选中窗体,查看其事件:

通过代码创建 也可以不用创建窗体,直接通过代码创建,来实现登录过程

UILoginForm frm = new UILoginForm(); frm.ShowInTaskbar = true; frm.Text = "Login"; frm.Title = "SunnyUI.Net Login Form"; frm.SubText = Version; frm.OnLogin += Frm_OnLogin; frm.LoginImage = UILoginForm.UILoginImage.Login2; frm.ShowDialog(); if (frm.IsLogin) { UIMessageTip.ShowOk("登录成功"); }

frm.Dispose();

在Frm_OnLogin事件里通过与数据库比对或者调用接口判断登录是否成功。例如:

private bool Frm_OnLogin(string userName, string password)

窗体

85 / 100

Page 86: GVP - gitee.com

{ return userName == "admin" && password == "admin"; }

窗体

86 / 100

Page 87: GVP - gitee.com

SunnyUI多页面框架由框架和页面构成。最基本的实现是框架(IFrame)由UIForm实现,页面由(UIPage)实现。在UIForm放置一个UITabControl,将多个UIPage放置于UIForm的UITabControl的TabPage内。通过PageIndex(正整数,唯一)进行页面的关联和切换。听起来有点复杂,其实主要就IFrame接口的三个函数:AddPage,ExistPage,SelectPage。

最简单的Demo实现见:窗体 - Frames - 自定义模板

新建项目,安装SunnyUI Nuget安装是Visual Studio引用控件包最方便快捷的方法。

安装方法一:通过PM命令安装: PM> Install-Package SunnyUI

安装方法二:通过Nuget包管理器搜索SunnyUI安装:

多页面框架

简述及示例

多页面框架

87 / 100

Page 88: GVP - gitee.com

新建框架:

修改:把Form修改成UIForm,并且 using Sunny.UI;

这时切换到窗体,窗体已经变为UIForm:

多页面框架

88 / 100

Page 89: GVP - gitee.com

下一步的操作非常重要:把窗体的AutoScaleMode从Font设置为None,否则可能出现因为屏幕分辨率而导致的窗体变形。

更改窗体名称为FCustomMain,并在窗体上放一个UITabControl控件,设置窗体的MainTabControl属性进行关联。

多页面框架

89 / 100

Page 90: GVP - gitee.com

新建页面:

修改:把Form修改成UIPage,并且 using Sunny.UI;

同样,把页面的AutoScaleMode从Font设置为None,否则可能出现因为屏幕分辨率而导致的窗体变形。 依次建立三个页面:FPage1,其属性PageIndex为1001,切记要设置PageIndex,就靠这个做关联的,正整数,唯一

FPage2,其属性PageIndex为1002FPage3,其属性PageIndex为1003

框架页面关联 FCustomMain上放置三个UIButton,命名为uiButton1,uiButton2,uiButton3,按钮事件如下:

private void uiButton1_Click(object sender, System.EventArgs e) { if (!ExistPage(1001)) { AddPage(new FPage1()); }

SelectPage(1001); }

private void uiButton2_Click(object sender, System.EventArgs e)

多页面框架

90 / 100

Page 91: GVP - gitee.com

{ if (!ExistPage(1002)) { AddPage(new FPage2()); }

SelectPage(1002); }

private void uiButton3_Click(object sender, System.EventArgs e) { if (!ExistPage(1003)) { AddPage(new FPage3()); }

SelectPage(1003); }

这样,一个多页面框架就实现了,点击三个按钮可以切换页面显示。

其他示例可以参照:窗体 - Frames - 内置模板参考七种内置模板的示例,以及SunnyUI.Demo.exe的FMain的示例。

多页面框架

91 / 100

Page 92: GVP - gitee.com

Winform窗体随着屏幕的DPI缩放,会引起窗体变形及字体变形。 SunnyUI的DPI缩放自适应方案目标为随着DPI缩放,窗体和字体均不变形,从而实现界面的美观。 主要有以下三步操作:

1、设置窗体和自定义用户控件的AutoScaleMode为None 实现目标:禁止窗体因为字体大小缩放变形因为显示的高分屏,然后操作系统的设置了字体缩放引起的。窗体默认的AutoScaleMode = Font,控件会因为高分屏自动缩放。 解决方法:设置窗

体、用户控件的AutoScaleMode = None

2、设置app.manifest的dpiAware为true 实现目标:禁止窗体因为DPI缩放变形 选择项目属性,安全性

选中 启用 ClickOnce 安全设

DPI缩放自适应方案

多页面框架

92 / 100

Page 93: GVP - gitee.com

置,再取消选中。 这时候项目的文件里就多了app.manifest 按下面代码修改,启用dpiAware

<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行 自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需 选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应 在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。 将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->

<application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware> </windowsSettings> </application>

<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) --> <!--

3、设置DPIScale为true 实现目标:DPI缩放后字体大小不变 确认编译时DPI缩放为100% 在主窗体上放置UIStyleManager控件

多页面框架

93 / 100

Page 94: GVP - gitee.com

设置DPIScale为true

编译程序,在不同的DPI缩放下测试编译好的SunnyUI.Demo.exe

多页面框架

94 / 100

Page 95: GVP - gitee.com

IniFile Ini文件读写类,基类为IniBase,已经处理过中文读写。 建议读写的ini文件为IniFile存储的文件。以免造成文件编码不统一。

Ini文件格式 程序没有任何配置文件,那么它对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,为了让程序出厂后还能根据需要进行必要的配置,所以要用配置文件;配置文件有很多种,如INI配置文件,XML配置文件,cfg配置文件,还有就是可以使用系统注册表等。INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。

什么是parameters?INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,如下所示:name = value

什么是sections?所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。 section如下所示:[section]

什么是comments?在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。注释实例如下:;comments text

IniFile类支持的数据类型 bool,byte,byte[],char,Color,Datetime,decimal,double,float,int,long,Point,PointF,sbyte,short,Size,SizeF,uint,ulong,ushort,Struct*

写文件

IniFile ini = new IniFile("D:\\setup.ini"); ini.Write("Setup", "Name", "Sunny"); ini.Write("Setup", "Age", 18); ini.UpdateFile();

ini配置文件被写到D:\setup.ini 打开此文件

;<!--配置文件-->[Setup]Name=SunnyAge=18

注意,如果写的文件在C盘,系统为win7以上,请确保所运行的程序有相应的权限可以在C盘文件夹写文件。 Write函数主要包括三个参数,分别对应Ini格式的section,name,value

读文件

IniFile ini = new IniFile("D:\\setup.ini"); string name = ini.ReadString("Setup", "Name", ""); int age = ini.ReadInt("Setup", "Age", 0);

Read函数主要包括三个参数,分别对应Ini格式的section,name,Default(如配置文件有值则从配置文件取值,如没有取Default值)

其他函数获取指定的Section名称中的所有Keypublic string[] GetKeys(string section)

从Ini文件中,读取所有的Sections的名称public string[] Sections

工具类库

IniFile - Ini文件读写类

工具类库

95 / 100

Page 96: GVP - gitee.com

读取指定的Section的所有Value到列表中public void GetSectionValues(string section, NameValueCollection values)

清除某个Sectionpublic void EraseSection(string section)

删除某个Section下的键public void DeleteKey(string section, string key)

检查某个Section下的某个键值是否存在public bool KeyExists(string section, string key)

工具类库

96 / 100

Page 97: GVP - gitee.com

看过 IniFile - Ini文件读写类 ,应该基本了解Ini文件的定义和读写了。

写文件

IniFile ini = new IniFile("D:\\setup.ini"); ini.Write("Setup", "Name", "Sunny"); ini.Write("Setup", "Age", 18); ini.UpdateFile();

读文件

IniFile ini = new IniFile("D:\\setup.ini"); string name = ini.ReadString("Setup", "Name", ""); int age = ini.ReadInt("Setup", "Age", 0);

可这样看起来似乎还是比较麻烦,得知道配置文件的位置,正确填写section,name的字符串值。有没有一个类,只要写了类的属性就可以直接用,而不需要关注读写。IniConfig就是这样的一个类,下面简单的介绍下IniConfig的用法。

原理通过反射读取和设置类的属性的值,并通过ini格式文件进行存储。

示例有这样一个配置文件,保存服务器的地址和端口,软件名称,以及软件中显示天气需要的城市名称。配置文件类代码如下:

[ConfigFile("Config\\Setting.ini")] public class Setting : IniConfig<Setting> { [ConfigSection("Hello")] public string SoftName { get; set; }

public string ServerIP { get; set; }

public int ServerPort { get; set; }

public string City { get; set; }

public override void SetDefault() { base.SetDefault(); SoftName = "XX软件"; ServerIP = "192.168.1.2"; ServerPort = 9090; City = "南京"; } }

[ConfigFile("Config\Setting.ini")]配置ini文件的位置,当前程序目录下Config目录下的Setting.ini。 *目录不存在时会自动创建目录

[ConfigSection("Hello")] 设置SoftName所在的节点Section的名称,如果不设置则默认为Setup

public override void SetDefault() 当第一次运行时配置文件不存在时,设置配置的默认值,并保存至文件。

读取读取系统配置,并开始应用:

Setting.Current.Load();

TcpClient client = new TcpClient(); client.Connect(Setting.Current.ServerIP, Setting.Current.ServerPort);

IniConfig - ini配置文件类

工具类库

97 / 100

Page 98: GVP - gitee.com

Setting.Current.Load();读取配置信息,将配置文件Setting.ini里的值读取到类的属性中。这样Setting.Current.ServerIP和Setting.Current.ServerPort就可以直接用了。如果需要修改配置,修改Setting.ini,重新读取就可以了。 注意:配置读取,属性的应用,都是用的Setting.Current,而不是Setting

保存系统修改配置,并保存到配置文件。例如系统中修改了获取天气的城市为重庆:

Setting.Current.City = "重庆"; Setting.Current.Save();

修改Setting.Current的属性,并通过Setting.Current.Save()保存即可。

其他通过IniConfig配置文件的应用,屏蔽ini文件常用的通过section,name的字符串值来获取参数的繁琐过程。 1、建议读写的ini文件为IniConfig存储的文件。以免造成文件编码不统一。即先生成这个文件,再进行修改,而不是手动创建配置文件。 2、配置读取,保存类的应用,都是用的Setting.Current,而不是Setting。 3、支持的属性类型见IniFile - Ini文件读写类

工具类库

98 / 100

Page 99: GVP - gitee.com

Json 简易的Json静态类库,可以在不引用NewtonJson即可简单处理Json对象。当然如果有复杂需求,第三方库还是推荐NewtonJson。另外在Net5,System.Text.Json的性能已经非常不错了,也可以尝试。

原理NetFramework:调用System.Web.Script.Serialization命名空间下的JavaScriptSerializerNetCore:调用System.Text.Json.JsonSerializer

函数public static T Deserialize(string input)将指定的Json字符串input转换为T类型的对象

public static string Serialize(object obj)将对象obj转换为Json字符串

public static T DeserializeFromFile(string filename, Encoding encoding)从文件读取字符串转换为T类型的对象

public static string SerializeToFile(object obj, string filename, Encoding encoding)将对象obj转换为Json字符串,并保存到文件

Json - 简易的Json静态类

工具类库

99 / 100

Page 100: GVP - gitee.com

工具类库

100 / 100