Compare commits

...

342 Commits

Author SHA1 Message Date
Sunny
42a042beb3 * UIDataGridView: 修复数据更新时是否自动滚动到最后一行 2025-04-21 22:54:29 +08:00
Sunny
123427892e * UITabControl: 更新部分注释 2025-04-21 22:15:14 +08:00
Sunny
0b7f218b3c * UITabControl: 修复不可关闭的主页被关闭了 #IC1XIU 2025-04-17 22:20:30 +08:00
Sunny
c5e5a11188 * UINavMenu: 增加节点文字居中的属性 2025-04-17 13:48:50 +08:00
Sunny
8bf338e488 3.8.3 2025-04-06 20:20:28 +08:00
Sunny
0d989a75ea * EnumEx: DisplayText特性改为原生的Description特性 2025-04-06 16:42:44 +08:00
Sunny
00897c5cc5 * UIBreadcrumb: 增加SetItemColor,设置单个节点颜色,可以用RemoveItemColor移除 2025-04-03 23:24:27 +08:00
Sunny
cd04f9cf19 * UIDigitalLabel: 增加ShowText属性,可以显示文字 #IBY64V 2025-04-03 22:43:44 +08:00
Sunny
7fd73a8808 * UILedLabel: 重构显示位置,并增加Padding属性关联显示 2025-03-31 21:03:58 +08:00
Sunny
b9c87e15e8 * UIComboBox: 修复过滤下拉框跟随主题配色 2025-03-18 22:36:33 +08:00
Sunny
4f75336ed5 * 增加控件在工具箱说明文字 2025-03-18 22:12:54 +08:00
Sunny
8fce03fff2 * 增加控件在工具箱说明文字 2025-03-17 23:50:55 +08:00
Sunny
42c453820c * 更新一些控件的字体图标 2025-03-16 13:27:59 +08:00
Sunny
dc503f0eea * UIDoubleUpDown: 增加按钮字体图标的大小属性
* UIIntegerUpDown: 增加按钮字体图标的大小属性
2025-03-16 13:20:12 +08:00
Sunny
76426019e3 更新Demo 2025-03-09 21:17:23 +08:00
Sunny
f40426c113 V3.8.2 2025-03-09 20:55:59 +08:00
Sunny
28a1f1a451 * UIBarChart: 增加Y轴零度线偏移量,Option.ZeroLineOffset 2025-03-05 21:12:11 +08:00
Sunny
ec00734884 * UIBattery: 增加图标旋转角度,增加图标偏移位置,调整图标最大值 2025-03-04 21:18:52 +08:00
Sunny
282c1ae17c * UITabControl: 增加标签页分割线属性ShowTabDivider,#IBLERL 2025-02-13 10:45:17 +08:00
Sunny
76910ac4ff * UITabControlMenu: 修复切换主题色时,TabPage未设置背景色,#IBKDR7 2025-02-07 21:12:24 +08:00
Sunny
a07043ae07 * UITabControl: 修复切换主题色时,TabPage未设置背景色,#IBKDR7 2025-02-07 21:09:34 +08:00
Sunny
8decdf00cf * UIColorPicker: 增加手动输入ARGB值调色 #IBHL0H 2025-02-04 22:13:55 +08:00
Sunny
c451a61a66 更新Demo 2025-02-04 21:36:42 +08:00
Sunny
2c3022a322 + UIStatusBox: 增加根据状态显示图片控件 2025-01-18 17:33:21 +08:00
Sunny
b0093af77a * UIMenuButton: 更改属性描述 2025-01-15 17:49:06 +08:00
Sunny
8727038717 * UIForm: 修复窗体边框显示不全 #IBGJBS 2025-01-09 20:44:27 +08:00
Sunny
b9daa7e005 更新版本日期 2025-01-07 22:19:21 +08:00
Sunny
031be368e4 * UFontAwesomeV6: 更新为Font Awesome version: 6.7.2 2025-01-06 21:54:57 +08:00
Sunny
6a5d7bea2f 更新描述 2025-01-02 21:51:25 +08:00
Sunny
8a5f6ea7b0 更改描述 2025-01-02 21:47:14 +08:00
Sunny
36b7d41336 V3.8.1 2024-12-27 23:34:17 +08:00
Sunny
66fec152d4 V3.8.1 2024-12-27 22:28:21 +08:00
Sunny
1d60a09987 重构 2024-12-27 21:37:59 +08:00
Sunny
6b5d644bd9 重构 2024-12-27 21:28:27 +08:00
Sunny
b01e4e14e1 + UIMenuButton: 增加下拉菜单按钮 2024-12-26 21:35:08 +08:00
Sunny
5d9e0a6f53 + UIMenuButton: 增加下拉菜单按钮 2024-12-26 21:32:53 +08:00
Sunny
65a35f5bad 增加了两处翻译 2024-12-23 22:49:45 +08:00
Sunny
c0c3298fd1 * UITitlePanel: 增加Padding设置 #IBB1UF 2024-12-14 20:11:13 +08:00
Sunny
2c70e734c4 * UITabControl: 增加未选页签颜色 #IB7U69 2024-12-12 23:11:35 +08:00
Sunny
d0c731fe97 * UITabControl: 修复标签文字越界显示 #IB8571 2024-12-12 22:31:28 +08:00
Sunny
09ba37daa3 * UIVerificationCode: 可以自定义颜色 #IBABW1 2024-12-12 20:49:26 +08:00
Sunny
000c567255 * UIComboDataGridView: 修复一个报错 #IB8YK9 2024-12-04 21:40:44 +08:00
Sunny
beb21ebb91 * UICalendar: 切换语言实时刷新 2024-12-02 21:34:22 +08:00
Sunny
452e9e6e15 * UIScrollingText: 停止滚动时,可以设置默认显示位置 2024-12-02 21:25:39 +08:00
Sunny
120dbf2151 * UICheckBoxGroup: 修复TitleTop为0时,条目显示错位的问题 #IB7STO
* UIRadioButtonGroup: 修复TitleTop为0时,条目显示错位的问题 #IB7STO
2024-11-29 10:59:06 +08:00
Sunny
98d280d9f0 * UITabControl: 修复了SelectedIndex=-1时的报错 2024-11-29 09:35:54 +08:00
Sunny
f831a92cf7 * UIComboDataGridView: 解决下拉框显示过滤编辑框不能一直显示 #IB7AFB 2024-11-28 21:05:48 +08:00
Sunny
661b44090c 更新Demo 2024-11-27 22:50:09 +08:00
Sunny
741d10939a * UFontAwesomeV6: 更新为Font Awesome version: 6.7.1 2024-11-27 22:33:15 +08:00
Sunny
22677c9974 更新Demo 2024-11-19 23:08:47 +08:00
Sunny
9dbc2e80bd 3.8.0.1 2024-11-19 22:31:12 +08:00
Sunny
28cc5b3823 V3.8.0 2024-11-19 22:10:21 +08:00
Sunny
c6650b3c0e * UINotifier: 点击提示关闭,增加输出提示 2024-11-19 12:33:30 +08:00
Sunny
1708d57ef1 重构 2024-11-19 09:46:37 +08:00
Sunny
7e6ee8e98b * UIPanel: 增加透明度 2024-11-19 09:40:43 +08:00
Sunny
3c2ba689eb 更新 2024-11-15 10:30:17 +08:00
Sunny
4760de7dd1 * UILineChart: 增加了鼠标移上绘制十字线颜色 2024-11-14 10:17:21 +08:00
Sunny
c676e92fda * UILineChart: 增加了鼠标移上绘制十字线样式 2024-11-13 11:05:53 +08:00
Sunny
92607169d5 * UIComboDataGridView: 增加下拉框滚动条宽度调整属性 2024-11-12 15:03:45 +08:00
Sunny
e4c483dfeb * UINavBar: 增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题 2024-11-11 11:24:12 +08:00
Sunny
af41257d35 * UIComboBox: 增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题
* UIComboBox: 删除ScrollBarColor、ScrollBarBackColor、ScrollBarStyleInherited属性
* UIColorPicker:  增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题
* UIComboDataGridView: 增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题
* UIComboTreeView: 增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题
* UIDatePicker: 增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题
* UIDatetimePicker: 增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题
* UIDatePicker: 增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题
* UINumPadTextBox: 增加StyleDropDown属性,手动修改Style时设置此属性以修改下拉框主题
2024-11-10 22:43:32 +08:00
Sunny
76b13321e6 * UControl: UITreeView增加了一个刷新节点状态的扩展函数 2024-11-06 14:33:31 +08:00
Sunny
63952daa11 * UIScrollBar: 修复了一些重载事件 2024-11-04 14:00:21 +08:00
Sunny
b68740f828 重构 2024-11-03 23:24:23 +08:00
Sunny
45d2eed8b9 * UIPage: 增加标题栏图片属性IconImage,优先于Symbol 2024-10-30 21:46:30 +08:00
Sunny
ecc5d49b90 * UIBaseForm: IconImage增加IconImageSize属性,可调整大小 2024-10-29 22:55:52 +08:00
Sunny
88bce81140 * UIComboBox: 增加了SelectionChangeCommitted事件,下拉框显示鼠标点击条目时响应 2024-10-28 22:46:47 +08:00
Sunny
2d98153089 * UIBarChart: 增加了一个快捷的显示数据函数ShowData 2024-10-25 10:44:56 +08:00
Sunny
49c9419590 * UIDigitalLabel: 增加DPI支持 2024-10-22 21:05:30 +08:00
Sunny
e9ffd02edc V3.7.2 2024-10-06 21:31:18 +08:00
Sunny
a411027eb1 * UIBaseForm: 增加属性IconImage,以改善Icon转Image显示不佳,状态栏显示仍然用Icon属性 2024-10-05 22:11:46 +08:00
Sunny
e67f03d9da * 重构多语翻译类 2024-10-05 21:09:26 +08:00
Sunny
7af419a5c0 * 重构多语翻译类 2024-09-29 22:27:03 +08:00
Sunny
5f09fe5626 * 重构多语翻译类 2024-09-27 23:34:14 +08:00
Sunny
2daddaef65 * 重构多语翻译类 2024-09-26 23:33:08 +08:00
Sunny
7bdde150c2 增加示例说明 2024-09-24 22:22:18 +08:00
Sunny
ecc1433b37 更新文档 2024-09-24 22:08:38 +08:00
Sunny
2ae270d571 更新文档 2024-09-23 22:21:59 +08:00
Sunny
9a3320c10f 更新文档 2024-09-22 22:21:11 +08:00
Sunny
aec616b1cf 增加文档 2024-09-22 21:18:27 +08:00
Sunny
b3ef1e1288 更新忽略项 2024-09-22 21:18:14 +08:00
Sunny
f12bef2dd8 * 重构多语翻译类 2024-09-17 22:49:54 +08:00
Sunny
2c24db60d9 * 重构多语翻译类 2024-09-16 21:54:35 +08:00
Sunny
1ccaaad57c * 重构多语翻译类 2024-09-16 21:47:57 +08:00
Sunny
3a506824d1 * 多页面框架重构 2024-09-16 17:33:34 +08:00
Sunny
c0fbc85a76 * 重构多语翻译类 2024-09-14 22:05:03 +08:00
Sunny
98c7a8f81e * 重构多语翻译类 2024-09-13 23:43:27 +08:00
Sunny
fd053e6553 * 重构多语翻译类 2024-09-10 23:31:49 +08:00
Sunny
6543a103a4 * UICheckBoxGroup: 2024-09-09: V3.7.0 更改计算节点位置的方法,解决问题:#IAPY94
* UIRadioButtonGroup: 2024-09-09: V3.7.0 更改计算节点位置的方法,解决问题:#IAPY94
2024-09-09 15:47:06 +08:00
Sunny
7fb69265ee * UIDataGridView: 解决有隐藏行时,滚动条滚动时出错的问题 #IAOW3A 2024-09-04 21:33:52 +08:00
Sunny
d1957cb75c * UINumPadTextBox: 增加ShowDropDown()弹窗方法 2024-09-03 16:34:42 +08:00
Sunny
6794b58d65 * UIRadioButton: 修改AutoSize属性可以保存在Design.cs文件里面,#IAKYX4
* UICheckBox: 修改AutoSize属性可以保存在Design.cs文件里面,#IAKYX4
2024-08-30 21:18:08 +08:00
Sunny
4dd0a284ac * UIDatePicker: 修复格式化字符串包含/时显示错误
* UIDateTimePicker: 修复格式化字符串包含/时显示错误
2024-08-28 21:55:55 +08:00
Sunny
51c6da4833 * UIDataGridView: 增加属性AutoScrollToBottom,数据更新时是否自动滚动到最后一行 2024-08-27 14:14:36 +08:00
Sunny
c2b4db9fc7 * UIDoubleUpDown: 增加加按钮字体图标的偏移位置
* UIIntegerUpDown: 增加加按钮字体图标的偏移位置
2024-08-27 14:07:21 +08:00
Sunny
83446dfcce V3.7.0 2024-08-27 10:40:48 +08:00
Sunny
073c2dbf0b * UIIntegerUpDown: 修改编辑框字体与显示字体一致
* UIDoubleUpDown: 修改编辑框字体与显示字体一致
* UITextBox: AutoSize时根据字体自动调整控件高度
2024-08-27 10:12:05 +08:00
Sunny
fcb55cbae4 * UICheckBox: 修复AutoSize在文字改变时未自动显示的问题,#IAKYX4
* UIRadioButton: 修复AutoSize在文字改变时未自动显示的问题,#IAKYX4
2024-08-26 22:49:49 +08:00
Sunny
7cf009af36 * UITextBox: 修复微软雅黑字体显示不完整的问题 2024-08-26 22:30:41 +08:00
Sunny
d1613f40d2 * UIMessageBox: UIMessageBox增加了快捷调用UIMessageForm2的方法 2024-08-26 11:32:35 +08:00
Sunny
e8ac774e0d * UIMessageBox: 修复一个Bug 2024-08-26 10:57:48 +08:00
Sunny
f6a6d75d5f 3.6.9 2024-08-17 23:07:45 +08:00
Sunny
cc4e37d1c1
update README.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-08-12 08:59:33 +00:00
Sunny
0fd93be25c * UIComboDataGridView: 修改下拉界面滚动条跟随主题
* UIComboTreeView: 修改下拉界面滚动条跟随主题
2024-08-12 16:42:43 +08:00
Sunny
f1543d9226 * UITextBox: 解决原生控件字体在微软雅黑时,显示不完整的问题 2024-08-12 16:31:42 +08:00
Sunny
c3f232baa0 + 增加应用公共类库 2024-08-12 15:06:58 +08:00
Sunny
f8b903b6ed * UIMessageForm2: 重构文字显示位置,重绘 2024-08-10 22:07:53 +08:00
Sunny
c328bb7f02 * 弹窗增加线程安全调用 2024-08-10 20:47:20 +08:00
Sunny
753d5b13d9 * UIFormHelper: 重构弹窗,窗体扩展打开默认以窗体居中,取消TopMost参数,默认为true 2024-08-09 23:58:38 +08:00
Sunny
089a624620 * UINavMenuHelper: 窗体移除时调用Close() 2024-08-07 15:11:29 +08:00
Sunny
c64bdddaf8 * 解决弹窗报错 2024-08-07 11:31:00 +08:00
Sunny
1317d552b5 * UITreeView: 不显示连线时,重绘节点前展开与收缩的图标 2024-08-06 20:13:39 +08:00
Sunny
f865be8731 * UIColorPicker: 增加ShowDropDown()函数 2024-08-05 14:48:00 +08:00
Sunny
47d1057945 * 重构公共类 2024-08-03 10:57:02 +08:00
Sunny
cfa40a5381 * UIEditForm: 代码生成增加文件选择和文件夹选择功能 2024-08-02 22:57:26 +08:00
Sunny
12359d1bb4 * UIFormHelper: 弹窗默认修改为以当前窗体居中,showMask=true或者centerParent=false时以屏幕居中 2024-07-30 17:50:33 +08:00
Sunny
073f4cb22c * UIForm: 最大化后,鼠标单击标题栏最上方,不恢复正常大小 2024-07-28 23:39:19 +08:00
Sunny
fcd8b00784 * UIForm: 修复鼠标点击事件
* UIForm2: 修复鼠标点击事件
2024-07-26 10:56:40 +08:00
Sunny
d06628903b * UIDateTimeItem: 修改单击选择日期后立即刷新,双击可选择并关闭下拉框 2024-07-25 21:37:10 +08:00
Sunny
f786f071f0 * UIComboDataGridView: 过滤字符串可以包含'*','[',']','%'字符 2024-07-23 16:47:28 +08:00
Sunny
855719997c * 修改国际化的Demo 2024-07-23 14:33:14 +08:00
Sunny
d4a6cc80cc * FMain: Demo增加注释 2024-07-21 21:31:41 +08:00
Sunny
bc393b226e * FMain: Demo增加注释 2024-07-21 21:30:25 +08:00
Sunny
bdaf058240 * UIForm2: 修改属性与UIForm兼容 2024-07-21 21:20:58 +08:00
Sunny
35ad7bc7a5 * UFontAwesomeV6: 更新为Font Awesome version: 6.6.0 2024-07-21 21:09:12 +08:00
Sunny
57534ad9c3 * UIForm: 修改为初始化最大化后恢复时界面尺寸大小正常 2024-07-21 20:56:10 +08:00
Sunny
abab088e0b * UIRichTextBox: 修改滚动条颜色跟随主题 2024-07-20 21:48:24 +08:00
Sunny
bac0f32fd2 * UIForm2: 修改最大化时按钮位置 2024-07-20 16:26:18 +08:00
Sunny
0f062f387d * UIForm: 最大化时,鼠标拖拽标题超过一定范围后再恢复Normal显示 2024-07-20 15:10:51 +08:00
Sunny
25f5fe5284 * UIForm2: 修改最大化时按钮位置 2024-07-20 14:55:24 +08:00
Sunny
c5bc2c04e0 3.6.8.1 2024-07-19 18:10:41 +08:00
Sunny
a0acf12632
update README.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-07-19 02:53:36 +00:00
Sunny
7fc1010705
update README.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-07-19 02:53:01 +00:00
Sunny
899f07a273
update README.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-07-19 02:44:16 +00:00
Sunny
2120e496a6
update SunnyUI.Demo.exe.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-07-19 02:41:53 +00:00
Sunny
e5d88c2b1f
add SunnyUI.Demo.exe.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-07-19 02:40:51 +00:00
Sunny
30834dce34 3.6.8 2024-07-19 09:36:30 +08:00
Sunny
ff578a46cf 3.6.8 2024-07-19 09:36:22 +08:00
Sunny
de35afe1a7 更新 2024-07-18 22:36:19 +08:00
Sunny
3f2d4d542b * UIStyles: 增加了一个设置控件容器内子控件自定义主题色的方法 2024-07-17 16:21:19 +08:00
Sunny
41f23482cd * UIDateTimeItem: 修改时间界面水平分割线颜色和位置
* UITimeItem: 修改时间界面水平分割线颜色和位置
2024-07-14 20:17:42 +08:00
Sunny
17adb334bf * UIDatePicker: 修改选择日期在下拉框中显示方式
* UIDatetimePicker: 修改选择日期在下拉框中显示方式
2024-07-13 23:08:57 +08:00
Sunny
759f6f0901 * UIComboTreeView: 修改下拉框全选按钮跟随主题,修改一处内置国际化翻译 2024-07-13 22:26:04 +08:00
Sunny
1e03aed0a7 * UILabel: 文字位置默认TopLeft 2024-07-10 11:07:00 +08:00
Sunny
3333fe2aba * UILineChart: 增加了Y轴自定义坐标显示 2024-07-01 22:57:32 +08:00
Sunny
688ff477d1 * UFontAwesomeV6: 减小文件大小 2024-06-27 09:57:15 +08:00
Sunny
3f2bdd86e5 * UFontAwesomeV6: 更新为Font Awesome version: 6.5.2 2024-06-26 14:20:40 +08:00
Sunny
48afcf2305 * UIDataGridView: 增加AddDateTimeColumn,解决默认时间列不显示秒数的问题 2024-06-19 21:38:34 +08:00
Sunny
91d6601d52 - FastLZ: 删除FastLZ类,源码见:https://gitee.com/yhuse/SunnyUI/blob/V3.6.7/SunnyUI/Common/UFastLZ.cs
可参考项目: https://www.nuget.org/packages/DotFastLZ.Compression
2024-06-19 21:17:57 +08:00
Sunny
23ae9da234 * IniUTF8Config: 增加一种默认编码为UTF8的Ini配置文件读写类 2024-06-19 21:14:04 +08:00
Sunny
1c6c9fe34f * 更新Demo 2024-06-12 22:51:07 +08:00
Sunny
58db4d3d28 V3.6.7 2024-06-11 23:07:17 +08:00
Sunny
7ce895f385 * UINavMenu: 更新 2024-06-11 22:02:49 +08:00
Sunny
5b28b736de * UITextBox: 调整为可继承 2024-06-11 21:31:41 +08:00
Sunny
29053a10eb * UINumPadTextBox: 下拉框可选放大倍数为2 2024-06-11 21:29:52 +08:00
Sunny
997594d3b3 * UIDatetimePicker: 下拉框可选放大倍数为2 2024-06-09 17:49:32 +08:00
Sunny
e6ed627a2a * UIDatePicker: 下拉框可选放大倍数为2 2024-06-09 17:30:22 +08:00
Sunny
eb7b0ca1b0 * UIDatePicker: 下拉框可选放大倍数为2 2024-06-09 17:24:08 +08:00
Sunny
308b3d54f3 * UIDatePicker: 下拉框可选放大倍数为2 2024-06-09 15:34:43 +08:00
Sunny
01750e69c7 * UIForm: 防止图标转换错误
* UIForm2: 防止图标转换错误
2024-06-08 23:20:46 +08:00
Sunny
6eb724e4b6 * UIBarChart: 修复X轴文字带角度显示时居中 2024-06-08 23:02:03 +08:00
Sunny
2b356290e6 * UIMessageForm2: 统一配色 2024-06-08 22:36:04 +08:00
Sunny
945f6911ad * UINotifier: 调整窗体及字体大小 2024-06-03 22:09:11 +08:00
Sunny
0aafb6e897 * UINotifier: 调整窗体及字体大小 2024-06-03 22:04:06 +08:00
Sunny
660cf54146 * UIDataGridViewFooter: 增加绑定列的ColumnName或者DataPropertyName都可以显示 2024-06-01 22:28:25 +08:00
Sunny
7c578496fc * UISplitContainer: 增加了SplitPanelState只读属性以获取状态。 2024-05-31 22:44:41 +08:00
Sunny
137258ce46 * UIInputForm: 修复调用时自定义主题参数不起作用的问题 2024-05-30 17:01:09 +08:00
Sunny
c4ce201513 * UIFormHelper: 修复弹窗标题显示错误 2024-05-30 16:36:48 +08:00
Sunny
0b74e6c548 * UIMiniPagination: 优化按钮自定义配色逻辑 2024-05-29 22:08:58 +08:00
Sunny
d19339cf1f * UIPagination: 优化按钮自定义配色逻辑 2024-05-29 21:57:32 +08:00
Sunny
0b32415224 * UIComboDataGridViewItem: 增加可过滤未显示列
* UIComboDataGridViewItem: FilterColumnName增加“;”分隔,支持多列过滤
2024-05-28 22:26:18 +08:00
Sunny
4a11746138 * UITreeView: 防止控件闪烁 2024-05-27 21:07:35 +08:00
Sunny
99ab567b2e * UINavMenu: 防止控件闪烁 2024-05-17 23:50:56 +08:00
Sunny
35ef10547f 调整图标位置 2024-05-16 22:43:52 +08:00
Sunny
46c6bec21d * UIForm: Resizable替代ShowDragStretch,显示边框可拖拽调整窗体大小
* UIForm2: Resizable替代ShowDragStretch,显示边框可拖拽调整窗体大小
2024-05-16 22:32:48 +08:00
Sunny
784e2904ec + UIMessageForm2: 新增了一种风格的消息提示框 2024-05-16 16:03:00 +08:00
Sunny
1c0d65d816 * UIProcessBar: 调整最小宽度,以适应垂直方向显示 2024-05-09 14:21:38 +08:00
Sunny
6b047520f4 * UIFormHelper: 默认弹窗的ShowMask都设置为false 2024-05-08 14:33:43 +08:00
Sunny
1277bad3f5 * UIDoughnutChart: 修复数据全为0时报错 2024-05-07 14:16:55 +08:00
Sunny
06309a546f 2024 2024-05-02 23:37:18 +08:00
Sunny
b0c391f7ce
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-05-02 15:19:56 +00:00
Sunny
734285bb73 V3.6.6 2024-05-02 23:04:38 +08:00
Sunny
4c0ebe10fb 重构部分代码 2024-05-02 21:26:00 +08:00
Sunny
e33f97b192 * 重构文件扩展类 2024-04-30 16:40:19 +08:00
Sunny
5715d13fac * 重构目录扩展类 2024-04-30 16:14:55 +08:00
Sunny
216beb4c59 * 修改内置部分窗体不显示Icon 2024-04-29 17:30:33 +08:00
Sunny
87e2f61218 * UIHorScrollBar: 修改Bug 2024-04-29 17:06:36 +08:00
Sunny
1b62abbff1 * UIBaseForm:增加UIBaseForm
* UIForm: 重构
* UIForm2: 重构
* UIBaseForm: 删除ShowTitleIcon,默认使用ShowIcon
2024-04-29 17:00:25 +08:00
Sunny
603bc69f32 * UIFlowLayoutPanel: 增加Render方法,尝试解决点击状态栏恢复窗体后右侧滚动条未消失的问题 2024-04-28 14:31:28 +08:00
Sunny
960d3665de * UIForm: 增加WindowStateChanged事件
* UIForm2: 增加WindowStateChanged事件
* UIPage: 增加WindowStateChanged事件
2024-04-28 14:29:46 +08:00
Sunny
ca1ab0cfd3 * UIFormHelper: 信息提示窗体跟随程序所在的屏幕 2024-04-28 10:12:33 +08:00
Sunny
8bdaac1ea8 * UIFormHelper: 提示框增加延时关闭 2024-04-27 17:27:09 +08:00
Sunny
aac4fb6382 * UIFormHelper: 重构,所有弹窗调整为窗体的扩展方法,使用时加上this.
* UIFormHelper: 输入弹窗前增加Show前缀
2024-04-22 23:04:28 +08:00
Sunny
9cef9a6608 删除一个函数 2024-04-16 23:11:02 +08:00
Sunny
877aec6ee2 * ShowProcessForm: 增加是否显示窗体边框 2024-04-16 22:39:36 +08:00
Sunny
eb3823582d * UITextBox: 加了一个判断 2024-04-16 22:24:18 +08:00
Sunny
b7fc97c918 * UIForm2: 设置默认Padding.Top为TitleHeight 2024-04-16 14:46:28 +08:00
Sunny
0f9c6c0c62 * UINavMenu: 修复通过代码设置背景色无效的问题 2024-04-13 17:54:00 +08:00
Sunny
d21e26da0c * UIMessageTip: 显示位置修复 2024-03-26 23:31:26 +08:00
Sunny
a5df9a778c * UIGroupBox: 修复Enabled为false时标题行框线绘制颜色 2024-03-22 11:15:51 +08:00
Sunny
44300efb06 Merge branch 'master' of https://gitee.com/yhuse/SunnyUI 2024-03-22 09:47:45 +08:00
Sunny
71bee928b5 * UIComboDataGridView: 增加ShowDropDown()
* UIComboTreeView: 增加ShowDropDown()
2024-03-22 09:47:34 +08:00
Sunny
7460eb6029
update README.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-03-21 06:49:01 +00:00
Sunny
c48ceacc27
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-02-28 12:44:18 +00:00
Sunny
f9a9436309
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-02-28 12:43:55 +00:00
Sunny
dbb94e7044 更新Demo 2024-02-28 20:35:57 +08:00
Sunny
687d698621 V3.6.5 2024-02-28 20:25:17 +08:00
Sunny
ff40c3b39d * UIniConfig: 增加按属性名称进行读写 2024-02-27 22:45:01 +08:00
Sunny
00c7147491 * UIButton: 增加Text的属性编辑器 2024-02-23 23:18:34 +08:00
Sunny
547ec9de80 * UIWaitingBar: 修改可自定义配色 2024-02-23 22:32:43 +08:00
Sunny
7ff8e13363 * UIButton: 增加按钮的&字符的Alt快捷键功能 2024-02-22 23:09:26 +08:00
Sunny
d118038ecf * UIForm: 最大化时,鼠标拖拽标题超过一定范围后再恢复Normal显示 2024-02-22 21:56:39 +08:00
Sunny
035c2e6ebd * UIContextMenuStrip: 节点AutoSize时不重绘,重绘时考虑Enabled为False时颜色显示 2024-02-22 21:41:52 +08:00
Sunny
01a83fe4ff * UIContextMenuStrip: 修复显示快捷键文本位置 2024-02-21 21:50:08 +08:00
Sunny
3eb957279f * UISymbolPanel: 设置默认尺寸 2024-02-20 21:42:57 +08:00
Sunny
df86542c41 * UIForm: 调整显示位置 2024-02-19 22:18:06 +08:00
Sunny
2c3d77f12a * UIForm2: 限制双击 2024-02-19 22:01:28 +08:00
Sunny
5b16bae03f * UIForm2: 增加主题风格设置 2024-02-19 21:31:14 +08:00
Sunny
79cb09618b * UIForm: 修改标题栏文字与控制按钮绘制重叠的问题 2024-02-19 17:42:10 +08:00
Sunny
b78aed01f7 * UINavMenu: 尝试减少刷新闪烁 2024-02-19 17:18:39 +08:00
Sunny
9eaf41849f * UIPagination: 优化按钮配色逻辑 2024-02-19 15:46:40 +08:00
Sunny
63c5788254 * UIComboBox: 修复在窗体构造函数设置SelectedIndex报错
* UIDropControl: 修改按钮大小调整时,清除按钮的位置
2024-01-27 20:42:35 +08:00
Sunny
882dbb3f40 * UIForm2: 更新 2024-01-25 22:43:00 +08:00
Sunny
feb8182a25 + UIForm2: 新增一种窗体基类,更接近于原生Form使用习惯 2024-01-24 22:55:47 +08:00
Sunny
1dd949dcc5 * UIDigitalLabel: 更新绘制 2024-01-23 14:17:59 +08:00
Sunny
ed559a1a21 * UIHeaderButton: 增加分组编号 2024-01-21 11:24:25 +08:00
Sunny
9620fb3e82 更新 2024-01-20 15:04:59 +08:00
Sunny
326f0fb8f6 * UITreeView: 自定义行颜色,可通过代码给颜色值,SetNodePainter,增加选中颜色 2024-01-20 11:59:18 +08:00
Sunny
8286051404 * UIDropControl: 下拉按钮可修改大小及位置 2024-01-19 22:19:42 +08:00
Sunny
983f032d3f * UIFlowLayoutPanel: 重写ScrollControlIntoView函数 2024-01-17 17:31:42 +08:00
Sunny
61ea69f2ff * UITextBox: 调整Radius时,自动调整文本框的位置 2024-01-13 11:35:46 +08:00
Sunny
989645ec97 * UICombobox: 修复一个设置Text,SelectedValue不变的问题 2024-01-05 21:59:03 +08:00
Sunny
2f5b07c87b * IniConfig: 增加文件编码 2024-01-05 21:05:04 +08:00
Sunny
00c6424e58 * UIniConfig: 修改保存文件的方式 2024-01-03 15:02:30 +08:00
Sunny
86a7358c7f
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2024-01-01 13:42:14 +00:00
Sunny
25fdc3c0e3 V3.6.3 2024-01-01 21:41:40 +08:00
Sunny
55115811bf * UITreeView: 增加可修改滚动条颜色 2024-01-01 21:08:02 +08:00
Sunny
9a3c8de7a9 * UIIntegerUpDown: 修复设置Style时按钮颜色不一致
* UIDoubleUpDown: 修复设置Style时按钮颜色不一致
2023-12-28 21:47:21 +08:00
Sunny
90fcb70cb0 * UIComboBox: 增加下拉界面的滚动条设置 2023-12-26 21:27:04 +08:00
Sunny
b5bbc3e5d9 * UIRichTextBox: 增加Text的属性编辑器
* UITextBox: 增加Text的属性编辑器
2023-12-25 20:40:29 +08:00
Sunny
7180c87291 * UIPage: 调整AfterShow事件位置及逻辑 2023-12-20 11:25:47 +08:00
Sunny
13ea135f89 * UITextBox: 修改显示按钮时Tips小红点的位置 2023-12-18 23:24:22 +08:00
Sunny
0019e7784d * UITextBox: 修复高度不随字体改变
* UIDropControl: 修复高度不随字体改变
2023-12-18 23:15:15 +08:00
Sunny
4cfdc8c795 * UIForm: RemovePage时调用Final() 2023-12-14 23:17:51 +08:00
Sunny
9dd5b99cf0 * UIForm: 优化UIPage的Init和Final加载逻辑
* UITabControl: 优化UIPage的Init和Final加载逻辑
2023-12-13 23:08:47 +08:00
Sunny
8fdf05c475 * 修改分页Demo 2023-12-12 21:30:55 +08:00
Sunny
9df4a65380 * ShowStatusForm: 增加可设置进度值 2023-12-11 21:32:05 +08:00
Sunny
0a05dd4312 + Demo增加字体图标界面 2023-12-08 20:45:53 +08:00
Sunny
441d9dac8b * 删除不要的注释 2023-12-06 21:00:01 +08:00
Sunny
52e3a3cb04 * UIButton: 修复LightStyle的背景颜色 2023-12-06 20:56:40 +08:00
Sunny
26a98fa4a6
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-12-04 14:42:44 +00:00
Sunny
7c029cd73d V3.6.2 2023-12-04 22:34:05 +08:00
Sunny
a354af7552 * UIForm: 修复修改Style后,BackColor未保存的问题
* UIPage: 修复修改Style后,BackColor未保存的问题
2023-12-04 22:03:51 +08:00
Sunny
a1923f32c6 * UICheckBox: 增加属性可修改图标大小
* UICheckBoxGroup: 增加属性可修改图标大小
* UIRadioButton: 增加属性可修改图标大小
* UIRadioButtonGroup: 增加属性可修改图标大小
2023-12-04 09:38:50 +08:00
Sunny
5ca057ab6c + UIDigitalLabel: 增加冷液晶显示LCD标签 2023-12-01 22:30:01 +08:00
Sunny
7c7cfb592d * 修改了一些注释文字 2023-11-30 22:08:47 +08:00
Sunny
9dc8b9b88b + UIThermometer: 增加温度计控件 2023-11-30 21:57:01 +08:00
Sunny
91c59c9abb + UIRuler: 增加刻度尺控件 2023-11-29 14:54:39 +08:00
Sunny
bd8b9eb5d4 * UITrackBar: 增加一种从上到下的进度显示方式 2023-11-28 22:23:14 +08:00
Sunny
90ac40f95e
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-11-28 06:00:55 +00:00
Sunny
ffdac09657 V3.6.1 2023-11-28 13:56:00 +08:00
Sunny
3efabfe80d * UIUserControl: 修复Panel内控件颜色设置问题 2023-11-28 13:41:08 +08:00
Sunny
16494fe74f * UIFontImages: 重写字体图标编辑器,优化打开速度 2023-11-26 11:48:02 +08:00
Sunny
5c2068875e + UISymbolPanel:增加图标编辑器面板 2023-11-25 23:16:36 +08:00
Sunny
2b8e1bd4f8 * UIButton: 修复LightStyle的文字颜色
* UISymbolButton: 修复LightStyle的文字和图标颜色
2023-11-24 14:12:32 +08:00
Sunny
1b24896190 * UILineChart: 增加了区域选择范围相等时不执行事件 2023-11-22 14:36:27 +08:00
Sunny
b3edaab127
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-11-21 14:11:10 +00:00
Sunny
b1708000cd
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-11-21 14:10:57 +00:00
Sunny
9f03303760 V3.6.0 2023-11-21 21:23:06 +08:00
Sunny
a8fc15abe3 * UIForm: 修改默认ShowShadow边框阴影打开,ShowRadius显示圆角关闭 2023-11-19 23:03:47 +08:00
Sunny
ee63065623 * 重构主题 2023-11-18 11:52:19 +08:00
Sunny
e25fe74d87 * 重构主题 2023-11-18 11:38:29 +08:00
Sunny
f994734c34 * 重构主题 2023-11-17 23:07:19 +08:00
Sunny
3ce56b3ed4 * 重构主题 2023-11-16 23:14:05 +08:00
Sunny
7bab50e103 * 重构主题 2023-11-16 23:11:23 +08:00
Sunny
70c3a7d690 * 重构主题 2023-11-16 22:53:00 +08:00
Sunny
48f52bf290 * 重构主题 2023-11-16 15:06:16 +08:00
Sunny
34b8a5277d 重构主题 2023-11-16 14:17:08 +08:00
Sunny
6236d38b60 * 重构主题 2023-11-16 12:00:08 +08:00
Sunny
c84f876f97 * 重构主题 2023-11-13 15:12:42 +08:00
Sunny
03d9f43d68 * 重构主题 2023-11-13 14:42:07 +08:00
Sunny
e092bfcbf7 * 重构主题 2023-11-13 13:52:06 +08:00
Sunny
b6bb47f2fd * 重构主题 2023-11-13 13:16:44 +08:00
Sunny
7c7e759f44 * 重构主题 2023-11-12 22:41:30 +08:00
Sunny
4496090fc7 * 修改点阵字体数字显示 2023-11-12 22:18:53 +08:00
Sunny
ef52687e98 * 重构主题 2023-11-12 22:05:11 +08:00
Sunny
8ce0156d97 * UIRadioButtonGroup: 重写UIRadioButtonGroup 2023-11-09 13:52:19 +08:00
Sunny
0d86af2a23 * UICheckBoxGroup: 重写UICheckBoxGroup 2023-11-08 15:24:32 +08:00
Sunny
0c1b7d13ba * UICheckBoxGroup: 重写UICheckBoxGroup 2023-11-07 23:19:23 +08:00
Sunny
718560e5c4 * UIRadioButton: 增加修改图标大小
* UICheckBox: 增加修改图标大小
2023-11-07 22:01:53 +08:00
Sunny
878c93f509 * 重构主题 2023-11-06 23:18:13 +08:00
Sunny
5d55924dba * 重构主题 2023-11-06 14:08:09 +08:00
Sunny
42ade126ad * 重构主题 2023-11-05 22:43:04 +08:00
Sunny
bd87f7f6ac * UIEditForm: 代码生成增加ComboDataGridView类型 2023-10-31 13:24:48 +08:00
Sunny
e93d84147f * 修改几个进度弹窗的关闭标志 2023-10-31 09:35:59 +08:00
Sunny
64302ef51f 重构GDI一些方法 2023-10-31 09:31:11 +08:00
Sunny
b33e77975d 适应C#8.0语法 2023-10-30 17:13:18 +08:00
Sunny
922c52914c 重构GDI一些方法 2023-10-30 13:52:56 +08:00
Sunny
54940a41db 重构GDI一些方法 2023-10-30 13:42:39 +08:00
Sunny
967c406885 重构GDI一些方法 2023-10-30 11:19:41 +08:00
Sunny
a04160cff2 重构GDI一些方法 2023-10-30 10:06:40 +08:00
Sunny
eefd366b6f
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-10-27 06:50:59 +00:00
Sunny
7854948759
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-10-27 06:50:45 +00:00
Sunny
cc261e52c4 V3.5.2 2023-10-27 14:44:49 +08:00
Sunny
4bb226b0ac + 字体图标增加旋转角度参数SymbolRotate 2023-10-26 22:28:12 +08:00
Sunny
54351ce05d + 字体图标增加旋转角度参数SymbolRotate 2023-10-26 22:24:29 +08:00
Sunny
b333d5ebce + 字体图标增加旋转角度参数SymbolRotate 2023-10-26 21:55:49 +08:00
Sunny
a266d608ff * UITextBox: 修改全局字体调整后的默认高度 2023-10-26 11:01:28 +08:00
Sunny
85a56809f1 * UIDropControl: 修复在高DPI下,文字垂直不居中的问题
* UIDropControl: 修复在某些字体不显示下划线的问题
2023-10-25 22:30:43 +08:00
Sunny
65edeffedd * UITextBox: 多行显示时位置调整 2023-10-25 17:31:51 +08:00
Sunny
16972fcf48 * UITextBox: 修复在高DPI下,文字垂直不居中的问题
* UITextBox: 修复在某些字体不显示下划线的问题
2023-10-25 17:19:20 +08:00
Sunny
49cda26702 * UFontImage: MaterialIcons字体图标调大3个像素 2023-10-25 15:10:47 +08:00
Sunny
8e3f95d961 重构字体图标显示,以期增加字体图标显示变化 2023-10-25 14:55:12 +08:00
Sunny
b0ab6079f6 重构字体图标显示,以期增加字体图标显示变化 2023-10-25 11:29:16 +08:00
Sunny
dc4d7a4840 重构字体图标显示,以期增加字体图标显示变化 2023-10-25 11:23:50 +08:00
Sunny
047a1f508d * UILineChart: 增加了绘制线的DashStyle样式 2023-10-20 23:16:13 +08:00
Sunny
fa7aaad7b4
!62 修复UIIPTextBox当Readonly时的bug
Merge pull request !62 from asuper/fix_uiiptextbox
2023-10-17 08:56:37 +00:00
Sunny
b11ffbb4d4 Merge branch 'master' of https://gitee.com/yhuse/SunnyUI 2023-10-17 16:52:47 +08:00
Sunny
4e54367f28 * UINavBar: 修正下拉菜单文字显示垂直居中
* UINavBar: ImageList为空时,下拉菜单增加Symbol绘制
* UIContextMenuStrip: 修正文字显示垂直居中
* UIContextMenuStrip: 当右键菜单未绑定ImageList,并且ImageIndex>0时,将ImageIndex绑定为Symbol绘制
2023-10-17 16:52:26 +08:00
asuper
aef7b2f00c 修复UIIPTextBox在Readonly且光标位于小数点后面时,可以通过Backspace键删除前一位的问题 2023-10-17 15:04:44 +08:00
Sunny
1244f62658
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-10-16 13:20:50 +00:00
Sunny
96b64900d8 V3.5.1 2023-10-16 17:26:23 +08:00
Sunny
9949f795f1 * 重构进度提示框和等待提示框,解决有时无法关闭的问题,并作为窗体的扩展方法使用。 2023-10-16 16:55:16 +08:00
Sunny
6e57c86b22 + 增加MaterialIcons字体图标 2023-10-13 23:29:07 +08:00
Sunny
9a6579befe * 重构字体图标类
+ 增加MaterialIcons字体图标
2023-10-13 23:19:29 +08:00
Sunny
1902dc2e50 * UIFlowLayoutPanel: 更新Demo 2023-10-11 22:50:09 +08:00
Sunny
ded733d152 * UIDataGridView: Demo改为原生用法 2023-10-11 22:20:28 +08:00
Sunny
9be05923be * UIForm: 增加一个在窗体显示后延时执行的事件
* UIPage: 增加一个在窗体显示后延时执行的事件
2023-10-09 23:45:04 +08:00
Sunny
e37f8a27bd * 几个线程控制的进度弹窗默认打开是增加延时200ms 2023-10-09 22:59:02 +08:00
Sunny
0ce8587bf7 * 几个线程控制的进度弹窗默认打开是增加延时200ms 2023-10-09 22:56:19 +08:00
Sunny
915c16d96f * IHideDropDown: 修改关闭下拉弹窗可能引起的出错 2023-10-07 22:48:22 +08:00
Sunny
930302a375 * UILineChart: 增加了X轴和Y轴鼠标选择区域并返回选中范围 2023-10-05 13:14:41 +08:00
Sunny
4cf7239d07 * UILineChart: 增加了Y轴数据由上向下绘制 2023-10-04 12:08:17 +08:00
Sunny
bc9e2effe5 * UILineChart: 增加了Y轴数据由上向下绘制 2023-10-04 11:33:07 +08:00
Sunny
069ed8c606 * UIComboDataGridView: 增加ClearFilter,可以清除弹窗的搜索栏文字 2023-09-25 12:14:52 +08:00
Sunny
637504e04b
update README.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-09-24 01:50:21 +00:00
Sunny
369359ef2e
update README.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-09-23 07:19:18 +00:00
Sunny
bb42f54cb0
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-09-19 04:37:29 +00:00
Sunny
b0b96e46bb
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-09-19 04:07:31 +00:00
Sunny
1cd11d8585
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-09-19 04:02:31 +00:00
Sunny
6c4e107ae3
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-09-19 04:02:16 +00:00
Sunny
50872db6b3
update Updates.md.
Signed-off-by: Sunny <yhuse@163.com>
2023-09-19 04:02:03 +00:00
528 changed files with 33671 additions and 22334 deletions

12
.gitignore vendored
View File

@ -25,6 +25,7 @@ x86/
bld/ bld/
[Oo]bj/ [Oo]bj/
[Ll]og/ [Ll]og/
[Bb]in/
# Visual Studio 2015/2017 cache/options directory # Visual Studio 2015/2017 cache/options directory
.vs/ .vs/
@ -345,3 +346,14 @@ healthchecksdb
/Bin/net6.0-windows /Bin/net6.0-windows
/Bin/net40 /Bin/net40
/Bin/net7.0-windows /Bin/net7.0-windows
/Bin/net8.0-windows
/SunnyUI.Demo/Bin/SunnyUI.Common.dll
/SunnyUI.Demo/Bin/SunnyUI.Demo.exe
/SunnyUI.Demo/Bin/SunnyUI.Demo.exe.config
/SunnyUI.Demo/Bin/SunnyUI.dll
/docs/.vitepress/cache/deps
/run.bat
/package.json
/package-lock.json
/docs/markdown-examples.md
/docs/api-examples.md

View File

@ -2,14 +2,15 @@
[![star](https://gitee.com/yhuse/SunnyUI/badge/star.svg?theme=gvp)](https://gitee.com/yhuse/SunnyUI/stargazers) [![star](https://gitee.com/yhuse/SunnyUI/badge/star.svg?theme=gvp)](https://gitee.com/yhuse/SunnyUI/stargazers)
[![fork](https://gitee.com/yhuse/SunnyUI/badge/fork.svg?theme=gvp)](https://gitee.com/yhuse/SunnyUI/members) [![fork](https://gitee.com/yhuse/SunnyUI/badge/fork.svg?theme=gvp)](https://gitee.com/yhuse/SunnyUI/members)
- 帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages - 帮助文档: [https://gitee.com/yhuse/SunnyUI/wikis/pages](https://gitee.com/yhuse/SunnyUI/wikis/pages)
- Gitee: https://gitee.com/yhuse/SunnyUI - 更新日志: [https://gitee.com/yhuse/SunnyUI/wikis/更新日志](https://gitee.com/yhuse/SunnyUI/wikis/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97)
- GitHub: https://github.com/yhuse/SunnyUI - Gitee: [https://gitee.com/yhuse/SunnyUI](https://gitee.com/yhuse/SunnyUI)
- Nuget: https://www.nuget.org/packages/SunnyUI/ - GitHub: [https://github.com/yhuse/SunnyUI](https://github.com/yhuse/SunnyUI)
- Blog: https://www.cnblogs.com/yhuse - Nuget: [https://www.nuget.org/packages/SunnyUI/](https://www.nuget.org/packages/SunnyUI/)
- EMail: yhuse@163.com - Blog: [https://www.cnblogs.com/yhuse](https://www.cnblogs.com/yhuse)
- 因为评论没有查找不利于解决问题故关闭项目评论功能。如果是问题或者建议请按照Issues模版添加Issue。 - 因为评论没有查找不利于解决问题故关闭项目评论功能。如果是问题或者建议请按照Issues模版添加Issue。
- 添加Issue: [https://gitee.com/yhuse/SunnyUI/issues/new](https://gitee.com/yhuse/SunnyUI/issues/new) - 添加Issue: [https://gitee.com/yhuse/SunnyUI/issues/new](https://gitee.com/yhuse/SunnyUI/issues/new)
- V3.6.8+Demo编译可执行文件: [https://gitee.com/yhuse/SunnyUI.Demo](https://gitee.com/yhuse/SunnyUI.Demo)
欢迎交流QQ群 56829229 (SunnyUI技术交流群)请给源码项目点个Star吧 欢迎交流QQ群 56829229 (SunnyUI技术交流群)请给源码项目点个Star吧
**个人学习交流免费,商业应用需要授权**联系QQ**17612584** 咨询授权事宜。 **个人学习交流免费,商业应用需要授权**联系QQ**17612584** 咨询授权事宜。
@ -22,10 +23,11 @@ SunnyUI.Net项目已加入[dotNET China](https://gitee.com/dotnetchina) 组织
![dotnetchina](https://images.gitee.com/uploads/images/2021/0324/120117_2da9922c_416720.png "132645_21007ea0_974299.png") ![dotnetchina](https://images.gitee.com/uploads/images/2021/0324/120117_2da9922c_416720.png "132645_21007ea0_974299.png")
#### 软件介绍 #### 软件介绍
- SunnyUI.Net 是基于.Net Framework 4.0+、.Net6、.Net7 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。 - SunnyUI.NET 是基于.Net Framework4.0+、.Net8、.Net9 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。
- 源码编译环境: - 源码编译环境:
1. **VS2022 17.4**,安装.NetFramework4.0目标包的方法见https://www.cnblogs.com/yhuse/p/15536393.html 1. **VS2022**,安装.NetFramework4.0目标包的方法见https://www.cnblogs.com/yhuse/p/15536393.html
- 动态库应用环境: **VS2010**及以上均可,支持.Net Framework 4.0+、.Net 6、.Net7 2. 编译源码,.Net8需要VS2022 17.12+版本或者修改SunnyUI.csproj文件的TargetFrameworks属性以适应VS环境
- 动态库应用环境: **VS2010**及以上均可,支持.Net Framework4.0+、.Net8、.Net9
1. 推荐通过Nuget安装Install-Package SunnyUI或者通过Nuget搜索SunnyUI安装。 1. 推荐通过Nuget安装Install-Package SunnyUI或者通过Nuget搜索SunnyUI安装。
2. 不支持(.Net Framework 4 **Client Profile**)。 2. 不支持(.Net Framework 4 **Client Profile**)。
@ -35,25 +37,36 @@ SunnyUI.Net项目已加入[dotNET China](https://gitee.com/dotnetchina) 组织
#### 支持开源 #### 支持开源
- 希望SunnyUI对您有用您的支持也是SunnyUI开源的动力SunnyUI有您更精彩 - 希望SunnyUI对您有用您的支持也是SunnyUI开源的动力SunnyUI有您更精彩
![感谢您的支持](https://images.gitee.com/uploads/images/2021/0409/201558_9a0993a3_416720.png "SupportSunnyUI.png") ![感谢您的支持](https://images.gitee.com/uploads/images/2021/0409/201558_9a0993a3_416720.png "SupportSunnyUI.png")
- 多多打赏,喝点咖啡提提神,或者防脱洗发水保养下头发,哈哈哈~ - 感谢老板打赏,来杯咖啡提提神,写代码更有劲头~
1、开源控件库 1、开源控件库
- 基于.Net Framework4.0,原生控件开发,参考 Element主题风格包含 按钮、编辑框、下拉框、数据表格、工控仪表、统计图表在内的常用控件超过 **70** 个,满足常规开发需求,每个控件都精雕细琢,注重细节; - 基于.Net Framework4.0,原生控件开发,参考 Element主题风格包含 按钮、编辑框、下拉框、数据表格、工控仪表、统计图表在内的常用控件超过 **70** 个,满足常规开发需求,每个控件都精雕细琢,注重细节;
- 包含 Element 风格主题 11 个,其他主题 6 个,可通过多彩主题模式自定义主题。包含主题管理组件 UIStyleManager可自由切换主题。 - 包含 Element 风格主题 11 个,其他主题 6 个,可通过多彩主题模式自定义主题。包含主题管理组件 UIStyleManager可自由切换主题。
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210102_6d4899e9_416720.png "1.png") ![输入图片说明](https://foruda.gitee.com/images/1695452615395997083/00202d42_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210116_bcd384cc_416720.png "2.png") ![输入图片说明](https://foruda.gitee.com/images/1695452642851863238/aaeec26f_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210130_666db8a5_416720.png "3.png") ![输入图片说明](https://foruda.gitee.com/images/1695452680081274144/3c1e7f98_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210140_de07ac54_416720.png "6.png") ![输入图片说明](https://foruda.gitee.com/images/1695452700873038668/063ed9c0_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210147_01be66cb_416720.png "4.png") ![输入图片说明](https://foruda.gitee.com/images/1695452736023225936/3390f8f2_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210154_e4235df6_416720.png "5.png") ![输入图片说明](https://foruda.gitee.com/images/1695452755229762213/ca32e657_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210203_b12eaa87_416720.png "7.png") ![输入图片说明](https://foruda.gitee.com/images/1695452775585329155/0dbba2b2_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210212_00646588_416720.png "8.png") ![输入图片说明](https://foruda.gitee.com/images/1695452790242801454/adfb6473_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/1011/104113_7d88b554_416720.png "UILineChart.png") ![输入图片说明](https://foruda.gitee.com/images/1695452812586687608/90d4f3eb_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210228_94c98123_416720.png "10.png") ![输入图片说明](https://foruda.gitee.com/images/1695452847110834271/9be91c47_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210235_9ee69ad8_416720.png "11.png") ![输入图片说明](https://foruda.gitee.com/images/1695452877418500901/2c591614_416720.png "屏幕截图")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0627/210243_76faa4ad_416720.png "12.png") ![输入图片说明](https://foruda.gitee.com/images/1695452892176132380/6c05f728_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695452907304141254/2dd0aa1b_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695452922677145039/3e8f40d1_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695452941707002701/0706c309_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695452962527727515/528579ba_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695452975298844079/ec3b9fce_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695453017275109921/7560fffb_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695453028239627243/e3037142_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695453068134019308/8a62c6ca_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695453092842557213/2a930ecc_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695453118713578423/4bb3fa94_416720.png "屏幕截图")
![输入图片说明](https://foruda.gitee.com/images/1695453138393750291/9ec560fd_416720.png "屏幕截图")
2、工具库 2、工具库
@ -66,7 +79,7 @@ SunnyUI.Net项目已加入[dotNET China](https://gitee.com/dotnetchina) 组织
4、多页面框架 4、多页面框架
- 参考Element包括7种常用框架风格只需几行简单的代码即可创建多页面程序其支撑组件包括UIFormUIPageUIFrame集合常用控件库即可快速开发WinForm应用程序。 - 参考Element包括7种常用框架风格只需几行简单的代码即可创建多页面程序其支撑组件包括UIFormUIPageUIFrame集合常用控件库即可快速开发WinForm应用程序。
![多页面框架](https://images.gitee.com/uploads/images/2020/0627/210832_a1a766ac_416720.png "21.png") ![输入图片说明](https://foruda.gitee.com/images/1695453189247127628/1adcd0d0_416720.png "屏幕截图")
#### 项目说明 #### 项目说明
- 个人学习交流免费商业应用需要授权。个人承接外包项目、个人开发商业项目等公司内部使用、开发项目等均属于商业应用范畴。联系QQ**17612584** 咨询授权事宜。 - 个人学习交流免费商业应用需要授权。个人承接外包项目、个人开发商业项目等公司内部使用、开发项目等均属于商业应用范畴。联系QQ**17612584** 咨询授权事宜。

4
SunnyUI.Demo.exe.md Normal file
View File

@ -0,0 +1,4 @@
V3.6.8
此版本开始SunnyUI.Demo的生成的可执行文件不包含在SunnyUI项目中
如需要查看,请移步:[SunnyUI.Demo.exe](https://gitee.com/yhuse/SunnyUI.Demo)
或者用[VS2022 v17.8](https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.8)版本编译源码,此版本开始支持.net8

Binary file not shown.

Binary file not shown.

View File

@ -1,3 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>

Binary file not shown.

View File

@ -18,6 +18,13 @@ namespace Sunny.UI.Demo
DateTime dt = new DateTime(2020, 10, 4); DateTime dt = new DateTime(2020, 10, 4);
UILineOption option = new UILineOption(); UILineOption option = new UILineOption();
//设置图表边框空白部分尺寸
option.Grid.Left = 60;
option.Grid.Right = 60;
option.Grid.Top = 60;
option.Grid.Bottom = 60;
option.ToolTip.Visible = true; option.ToolTip.Visible = true;
option.Title = new UITitle(); option.Title = new UITitle();
option.Title.Text = "SunnyUI"; option.Title.Text = "SunnyUI";
@ -40,6 +47,7 @@ namespace Sunny.UI.Demo
//数据点显示小数位数 //数据点显示小数位数
series.YAxisDecimalPlaces = 2; series.YAxisDecimalPlaces = 2;
//增加曲线时可以设置曲线颜色例如Color.Lime
series = option.AddSeries(new UILineSeries("Line2", Color.Lime)); series = option.AddSeries(new UILineSeries("Line2", Color.Lime));
series.Add(dt.AddHours(3), 3.3); series.Add(dt.AddHours(3), 3.3);
series.Add(dt.AddHours(4), 2.3); series.Add(dt.AddHours(4), 2.3);
@ -116,6 +124,9 @@ namespace Sunny.UI.Demo
//设置曲线显示最大点数,超过后自动清理 //设置曲线显示最大点数,超过后自动清理
series.SetMaxCount(50); series.SetMaxCount(50);
//设置曲线平滑
series.Smooth = true;
//坐标轴显示小数位数 //坐标轴显示小数位数
option.XAxis.AxisLabel.DecimalPlaces = 1; option.XAxis.AxisLabel.DecimalPlaces = 1;
option.YAxis.AxisLabel.DecimalPlaces = 1; option.YAxis.AxisLabel.DecimalPlaces = 1;

View File

@ -196,7 +196,7 @@ namespace Sunny.UI.Demo
this.uiAvatar2.AvatarSize = 55; this.uiAvatar2.AvatarSize = 55;
this.uiAvatar2.Font = new System.Drawing.Font("宋体", 12F); this.uiAvatar2.Font = new System.Drawing.Font("宋体", 12F);
this.uiAvatar2.Icon = Sunny.UI.UIAvatar.UIIcon.Image; this.uiAvatar2.Icon = Sunny.UI.UIAvatar.UIIcon.Image;
this.uiAvatar2.Image = global::Sunny.UI.Demo.Properties.Resources.SunnyUISmall; this.uiAvatar2.Image = global::Sunny.UI.Demo.Properties.Resources.SunnyUI72;
this.uiAvatar2.Location = new System.Drawing.Point(30, 85); this.uiAvatar2.Location = new System.Drawing.Point(30, 85);
this.uiAvatar2.MinimumSize = new System.Drawing.Size(1, 1); this.uiAvatar2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiAvatar2.Name = "uiAvatar2"; this.uiAvatar2.Name = "uiAvatar2";

View File

@ -84,10 +84,17 @@ namespace Sunny.UI.Demo
this.uiToolTip1 = new Sunny.UI.UIToolTip(this.components); this.uiToolTip1 = new Sunny.UI.UIToolTip(this.components);
this.uiSwitch5 = new Sunny.UI.UISwitch(); this.uiSwitch5 = new Sunny.UI.UISwitch();
this.uiSwitch6 = new Sunny.UI.UISwitch(); this.uiSwitch6 = new Sunny.UI.UISwitch();
this.uiMenuButton1 = new Sunny.UI.UIMenuButton();
this.uiLine6 = new Sunny.UI.UILine();
this.uiContextMenuStrip1 = new Sunny.UI.UIContextMenuStrip();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton4)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.uiImageButton4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.uiImageButton3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.uiImageButton2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.uiImageButton1)).BeginInit();
this.uiContextMenuStrip1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// uiSwitch3 // uiSwitch3
@ -217,7 +224,9 @@ namespace Sunny.UI.Demo
// //
// uiLine5 // uiLine5
// //
this.uiLine5.BackColor = System.Drawing.Color.Transparent;
this.uiLine5.Font = new System.Drawing.Font("宋体", 12F); this.uiLine5.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine5.Location = new System.Drawing.Point(388, 397); this.uiLine5.Location = new System.Drawing.Point(388, 397);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5"; this.uiLine5.Name = "uiLine5";
@ -239,7 +248,9 @@ namespace Sunny.UI.Demo
// //
// uiLine4 // uiLine4
// //
this.uiLine4.BackColor = System.Drawing.Color.Transparent;
this.uiLine4.Font = new System.Drawing.Font("宋体", 12F); this.uiLine4.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine4.Location = new System.Drawing.Point(30, 397); this.uiLine4.Location = new System.Drawing.Point(30, 397);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4"; this.uiLine4.Name = "uiLine4";
@ -273,7 +284,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton24.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right) this.uiSymbolButton24.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom))); | System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton24.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton24.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton24.Symbol = 61473; this.uiSymbolButton24.Symbol = 361473;
this.uiSymbolButton24.TabIndex = 103; this.uiSymbolButton24.TabIndex = 103;
this.uiSymbolButton24.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton24.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -286,7 +297,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton23.Name = "uiSymbolButton23"; this.uiSymbolButton23.Name = "uiSymbolButton23";
this.uiSymbolButton23.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiSymbolButton23.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiSymbolButton23.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton23.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton23.Symbol = 61544; this.uiSymbolButton23.Symbol = 361544;
this.uiSymbolButton23.TabIndex = 102; this.uiSymbolButton23.TabIndex = 102;
this.uiSymbolButton23.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton23.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -299,7 +310,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton22.Name = "uiSymbolButton22"; this.uiSymbolButton22.Name = "uiSymbolButton22";
this.uiSymbolButton22.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiSymbolButton22.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiSymbolButton22.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton22.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton22.Symbol = 61508; this.uiSymbolButton22.Symbol = 361508;
this.uiSymbolButton22.TabIndex = 101; this.uiSymbolButton22.TabIndex = 101;
this.uiSymbolButton22.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton22.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -312,7 +323,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton19.Name = "uiSymbolButton19"; this.uiSymbolButton19.Name = "uiSymbolButton19";
this.uiSymbolButton19.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.LeftTop | Sunny.UI.UICornerRadiusSides.LeftBottom))); this.uiSymbolButton19.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.LeftTop | Sunny.UI.UICornerRadiusSides.LeftBottom)));
this.uiSymbolButton19.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton19.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton19.Symbol = 61543; this.uiSymbolButton19.Symbol = 361543;
this.uiSymbolButton19.TabIndex = 100; this.uiSymbolButton19.TabIndex = 100;
this.uiSymbolButton19.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton19.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -325,7 +336,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton20.Name = "uiSymbolButton20"; this.uiSymbolButton20.Name = "uiSymbolButton20";
this.uiSymbolButton20.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.RightTop | Sunny.UI.UICornerRadiusSides.RightBottom))); this.uiSymbolButton20.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.RightTop | Sunny.UI.UICornerRadiusSides.RightBottom)));
this.uiSymbolButton20.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton20.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton20.Symbol = 61522; this.uiSymbolButton20.Symbol = 361522;
this.uiSymbolButton20.TabIndex = 99; this.uiSymbolButton20.TabIndex = 99;
this.uiSymbolButton20.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton20.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -338,7 +349,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton21.Name = "uiSymbolButton21"; this.uiSymbolButton21.Name = "uiSymbolButton21";
this.uiSymbolButton21.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiSymbolButton21.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiSymbolButton21.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton21.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton21.Symbol = 61520; this.uiSymbolButton21.Symbol = 361520;
this.uiSymbolButton21.TabIndex = 98; this.uiSymbolButton21.TabIndex = 98;
this.uiSymbolButton21.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton21.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -351,7 +362,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton13.Name = "uiSymbolButton13"; this.uiSymbolButton13.Name = "uiSymbolButton13";
this.uiSymbolButton13.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiSymbolButton13.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiSymbolButton13.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton13.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton13.Symbol = 61518; this.uiSymbolButton13.Symbol = 361518;
this.uiSymbolButton13.TabIndex = 97; this.uiSymbolButton13.TabIndex = 97;
this.uiSymbolButton13.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton13.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -364,7 +375,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton14.Name = "uiSymbolButton14"; this.uiSymbolButton14.Name = "uiSymbolButton14";
this.uiSymbolButton14.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiSymbolButton14.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiSymbolButton14.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton14.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton14.Symbol = 61514; this.uiSymbolButton14.Symbol = 361514;
this.uiSymbolButton14.TabIndex = 96; this.uiSymbolButton14.TabIndex = 96;
this.uiSymbolButton14.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton14.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -377,7 +388,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton15.Name = "uiSymbolButton15"; this.uiSymbolButton15.Name = "uiSymbolButton15";
this.uiSymbolButton15.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiSymbolButton15.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiSymbolButton15.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton15.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton15.Symbol = 61513; this.uiSymbolButton15.Symbol = 361513;
this.uiSymbolButton15.TabIndex = 95; this.uiSymbolButton15.TabIndex = 95;
this.uiSymbolButton15.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton15.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -390,7 +401,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton16.Name = "uiSymbolButton16"; this.uiSymbolButton16.Name = "uiSymbolButton16";
this.uiSymbolButton16.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiSymbolButton16.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiSymbolButton16.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton16.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton16.Symbol = 61517; this.uiSymbolButton16.Symbol = 361517;
this.uiSymbolButton16.TabIndex = 94; this.uiSymbolButton16.TabIndex = 94;
this.uiSymbolButton16.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton16.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -403,7 +414,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton17.Name = "uiSymbolButton17"; this.uiSymbolButton17.Name = "uiSymbolButton17";
this.uiSymbolButton17.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiSymbolButton17.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiSymbolButton17.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton17.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton17.Symbol = 61516; this.uiSymbolButton17.Symbol = 361516;
this.uiSymbolButton17.TabIndex = 93; this.uiSymbolButton17.TabIndex = 93;
this.uiSymbolButton17.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton17.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -416,13 +427,15 @@ namespace Sunny.UI.Demo
this.uiSymbolButton18.Name = "uiSymbolButton18"; this.uiSymbolButton18.Name = "uiSymbolButton18";
this.uiSymbolButton18.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.LeftTop | Sunny.UI.UICornerRadiusSides.LeftBottom))); this.uiSymbolButton18.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.LeftTop | Sunny.UI.UICornerRadiusSides.LeftBottom)));
this.uiSymbolButton18.Size = new System.Drawing.Size(46, 35); this.uiSymbolButton18.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton18.Symbol = 61515; this.uiSymbolButton18.Symbol = 361515;
this.uiSymbolButton18.TabIndex = 92; this.uiSymbolButton18.TabIndex = 92;
this.uiSymbolButton18.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton18.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
// uiLine3 // uiLine3
// //
this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F); this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(30, 315); this.uiLine3.Location = new System.Drawing.Point(30, 315);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3"; this.uiLine3.Name = "uiLine3";
@ -449,7 +462,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton7.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton7.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton7.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton7.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton7.Size = new System.Drawing.Size(35, 35); this.uiSymbolButton7.Size = new System.Drawing.Size(35, 35);
this.uiSymbolButton7.Style = Sunny.UI.UIStyle.Red; this.uiSymbolButton7.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton7.StyleCustomMode = true; this.uiSymbolButton7.StyleCustomMode = true;
this.uiSymbolButton7.Symbol = 61809; this.uiSymbolButton7.Symbol = 61809;
this.uiSymbolButton7.TabIndex = 90; this.uiSymbolButton7.TabIndex = 90;
@ -473,7 +486,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton8.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiSymbolButton8.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton8.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiSymbolButton8.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton8.Size = new System.Drawing.Size(35, 35); this.uiSymbolButton8.Size = new System.Drawing.Size(35, 35);
this.uiSymbolButton8.Style = Sunny.UI.UIStyle.Orange; this.uiSymbolButton8.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton8.StyleCustomMode = true; this.uiSymbolButton8.StyleCustomMode = true;
this.uiSymbolButton8.Symbol = 61445; this.uiSymbolButton8.Symbol = 61445;
this.uiSymbolButton8.TabIndex = 89; this.uiSymbolButton8.TabIndex = 89;
@ -497,7 +510,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton9.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiSymbolButton9.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton9.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiSymbolButton9.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton9.Size = new System.Drawing.Size(35, 35); this.uiSymbolButton9.Size = new System.Drawing.Size(35, 35);
this.uiSymbolButton9.Style = Sunny.UI.UIStyle.Green; this.uiSymbolButton9.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton9.StyleCustomMode = true; this.uiSymbolButton9.StyleCustomMode = true;
this.uiSymbolButton9.Symbol = 57607; this.uiSymbolButton9.Symbol = 57607;
this.uiSymbolButton9.TabIndex = 88; this.uiSymbolButton9.TabIndex = 88;
@ -535,7 +548,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton11.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton11.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton11.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton11.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton11.Size = new System.Drawing.Size(35, 35); this.uiSymbolButton11.Size = new System.Drawing.Size(35, 35);
this.uiSymbolButton11.Style = Sunny.UI.UIStyle.Red; this.uiSymbolButton11.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton11.StyleCustomMode = true; this.uiSymbolButton11.StyleCustomMode = true;
this.uiSymbolButton11.Symbol = 61508; this.uiSymbolButton11.Symbol = 61508;
this.uiSymbolButton11.TabIndex = 86; this.uiSymbolButton11.TabIndex = 86;
@ -578,9 +591,9 @@ namespace Sunny.UI.Demo
this.uiSymbolButton6.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton6.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton6.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton6.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Red; this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton6.StyleCustomMode = true; this.uiSymbolButton6.StyleCustomMode = true;
this.uiSymbolButton6.Symbol = 61532; this.uiSymbolButton6.Symbol = 361532;
this.uiSymbolButton6.TabIndex = 84; this.uiSymbolButton6.TabIndex = 84;
this.uiSymbolButton6.Text = "Error"; this.uiSymbolButton6.Text = "Error";
this.uiSymbolButton6.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton6.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
@ -602,9 +615,9 @@ namespace Sunny.UI.Demo
this.uiSymbolButton5.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiSymbolButton5.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiSymbolButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton5.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton5.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Orange; this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton5.StyleCustomMode = true; this.uiSymbolButton5.StyleCustomMode = true;
this.uiSymbolButton5.Symbol = 61553; this.uiSymbolButton5.Symbol = 361553;
this.uiSymbolButton5.TabIndex = 83; this.uiSymbolButton5.TabIndex = 83;
this.uiSymbolButton5.Text = "Warn"; this.uiSymbolButton5.Text = "Warn";
this.uiSymbolButton5.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton5.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
@ -626,9 +639,9 @@ namespace Sunny.UI.Demo
this.uiSymbolButton3.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiSymbolButton3.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton3.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiSymbolButton3.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton3.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton3.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton3.Style = Sunny.UI.UIStyle.Green; this.uiSymbolButton3.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton3.StyleCustomMode = true; this.uiSymbolButton3.StyleCustomMode = true;
this.uiSymbolButton3.Symbol = 61530; this.uiSymbolButton3.Symbol = 361530;
this.uiSymbolButton3.TabIndex = 82; this.uiSymbolButton3.TabIndex = 82;
this.uiSymbolButton3.Text = "Success"; this.uiSymbolButton3.Text = "Success";
this.uiSymbolButton3.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton3.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
@ -643,7 +656,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton4.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton4.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton4.Style = Sunny.UI.UIStyle.Custom; this.uiSymbolButton4.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton4.StyleCustomMode = true; this.uiSymbolButton4.StyleCustomMode = true;
this.uiSymbolButton4.Symbol = 61529; this.uiSymbolButton4.Symbol = 361529;
this.uiSymbolButton4.TabIndex = 81; this.uiSymbolButton4.TabIndex = 81;
this.uiSymbolButton4.Text = "Query"; this.uiSymbolButton4.Text = "Query";
this.uiSymbolButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
@ -665,9 +678,9 @@ namespace Sunny.UI.Demo
this.uiSymbolButton2.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton2.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton2.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton2.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton2.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton2.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton2.Style = Sunny.UI.UIStyle.Red; this.uiSymbolButton2.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton2.StyleCustomMode = true; this.uiSymbolButton2.StyleCustomMode = true;
this.uiSymbolButton2.Symbol = 61453; this.uiSymbolButton2.Symbol = 361453;
this.uiSymbolButton2.TabIndex = 80; this.uiSymbolButton2.TabIndex = 80;
this.uiSymbolButton2.Text = "Cancel"; this.uiSymbolButton2.Text = "Cancel";
this.uiSymbolButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
@ -688,7 +701,9 @@ namespace Sunny.UI.Demo
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(30, 185); this.uiLine2.Location = new System.Drawing.Point(30, 185);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
@ -699,7 +714,9 @@ namespace Sunny.UI.Demo
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(30, 55); this.uiLine1.Location = new System.Drawing.Point(30, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -726,7 +743,7 @@ namespace Sunny.UI.Demo
this.uiButton13.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiButton13.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton13.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiButton13.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton13.Size = new System.Drawing.Size(100, 35); this.uiButton13.Size = new System.Drawing.Size(100, 35);
this.uiButton13.Style = Sunny.UI.UIStyle.Red; this.uiButton13.Style = Sunny.UI.UIStyle.Custom;
this.uiButton13.StyleCustomMode = true; this.uiButton13.StyleCustomMode = true;
this.uiButton13.TabIndex = 76; this.uiButton13.TabIndex = 76;
this.uiButton13.Text = "Red"; this.uiButton13.Text = "Red";
@ -750,7 +767,7 @@ namespace Sunny.UI.Demo
this.uiButton14.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiButton14.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton14.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiButton14.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton14.Size = new System.Drawing.Size(100, 35); this.uiButton14.Size = new System.Drawing.Size(100, 35);
this.uiButton14.Style = Sunny.UI.UIStyle.Orange; this.uiButton14.Style = Sunny.UI.UIStyle.Custom;
this.uiButton14.StyleCustomMode = true; this.uiButton14.StyleCustomMode = true;
this.uiButton14.TabIndex = 75; this.uiButton14.TabIndex = 75;
this.uiButton14.Text = "Orange"; this.uiButton14.Text = "Orange";
@ -774,7 +791,7 @@ namespace Sunny.UI.Demo
this.uiButton15.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112))))); this.uiButton15.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.uiButton15.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112))))); this.uiButton15.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.uiButton15.Size = new System.Drawing.Size(100, 35); this.uiButton15.Size = new System.Drawing.Size(100, 35);
this.uiButton15.Style = Sunny.UI.UIStyle.Gray; this.uiButton15.Style = Sunny.UI.UIStyle.Custom;
this.uiButton15.StyleCustomMode = true; this.uiButton15.StyleCustomMode = true;
this.uiButton15.TabIndex = 74; this.uiButton15.TabIndex = 74;
this.uiButton15.Text = "Gray"; this.uiButton15.Text = "Gray";
@ -798,7 +815,7 @@ namespace Sunny.UI.Demo
this.uiButton16.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiButton16.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton16.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiButton16.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton16.Size = new System.Drawing.Size(100, 35); this.uiButton16.Size = new System.Drawing.Size(100, 35);
this.uiButton16.Style = Sunny.UI.UIStyle.Green; this.uiButton16.Style = Sunny.UI.UIStyle.Custom;
this.uiButton16.StyleCustomMode = true; this.uiButton16.StyleCustomMode = true;
this.uiButton16.TabIndex = 73; this.uiButton16.TabIndex = 73;
this.uiButton16.Text = "Green"; this.uiButton16.Text = "Green";
@ -813,6 +830,7 @@ namespace Sunny.UI.Demo
this.uiButton17.Name = "uiButton17"; this.uiButton17.Name = "uiButton17";
this.uiButton17.Radius = 35; this.uiButton17.Radius = 35;
this.uiButton17.Size = new System.Drawing.Size(100, 35); this.uiButton17.Size = new System.Drawing.Size(100, 35);
this.uiButton17.Style = Sunny.UI.UIStyle.Custom;
this.uiButton17.StyleCustomMode = true; this.uiButton17.StyleCustomMode = true;
this.uiButton17.TabIndex = 72; this.uiButton17.TabIndex = 72;
this.uiButton17.Text = "Blue"; this.uiButton17.Text = "Blue";
@ -849,7 +867,7 @@ namespace Sunny.UI.Demo
this.uiButton4.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiButton4.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton4.ShowFocusLine = true; this.uiButton4.ShowFocusLine = true;
this.uiButton4.Size = new System.Drawing.Size(100, 35); this.uiButton4.Size = new System.Drawing.Size(100, 35);
this.uiButton4.Style = Sunny.UI.UIStyle.Red; this.uiButton4.Style = Sunny.UI.UIStyle.Custom;
this.uiButton4.StyleCustomMode = true; this.uiButton4.StyleCustomMode = true;
this.uiButton4.TabIndex = 64; this.uiButton4.TabIndex = 64;
this.uiButton4.Text = "Red"; this.uiButton4.Text = "Red";
@ -873,7 +891,7 @@ namespace Sunny.UI.Demo
this.uiButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton5.ShowFocusLine = true; this.uiButton5.ShowFocusLine = true;
this.uiButton5.Size = new System.Drawing.Size(100, 35); this.uiButton5.Size = new System.Drawing.Size(100, 35);
this.uiButton5.Style = Sunny.UI.UIStyle.Orange; this.uiButton5.Style = Sunny.UI.UIStyle.Custom;
this.uiButton5.StyleCustomMode = true; this.uiButton5.StyleCustomMode = true;
this.uiButton5.TabIndex = 63; this.uiButton5.TabIndex = 63;
this.uiButton5.Text = "Orange"; this.uiButton5.Text = "Orange";
@ -897,7 +915,7 @@ namespace Sunny.UI.Demo
this.uiButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112))))); this.uiButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.uiButton6.ShowFocusLine = true; this.uiButton6.ShowFocusLine = true;
this.uiButton6.Size = new System.Drawing.Size(100, 35); this.uiButton6.Size = new System.Drawing.Size(100, 35);
this.uiButton6.Style = Sunny.UI.UIStyle.Gray; this.uiButton6.Style = Sunny.UI.UIStyle.Custom;
this.uiButton6.StyleCustomMode = true; this.uiButton6.StyleCustomMode = true;
this.uiButton6.TabIndex = 62; this.uiButton6.TabIndex = 62;
this.uiButton6.Text = "Gray"; this.uiButton6.Text = "Gray";
@ -921,7 +939,7 @@ namespace Sunny.UI.Demo
this.uiButton3.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiButton3.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton3.ShowFocusLine = true; this.uiButton3.ShowFocusLine = true;
this.uiButton3.Size = new System.Drawing.Size(100, 35); this.uiButton3.Size = new System.Drawing.Size(100, 35);
this.uiButton3.Style = Sunny.UI.UIStyle.Green; this.uiButton3.Style = Sunny.UI.UIStyle.Custom;
this.uiButton3.StyleCustomMode = true; this.uiButton3.StyleCustomMode = true;
this.uiButton3.TabIndex = 61; this.uiButton3.TabIndex = 61;
this.uiButton3.Text = "Green"; this.uiButton3.Text = "Green";
@ -937,6 +955,7 @@ namespace Sunny.UI.Demo
this.uiButton2.ShowFocusLine = true; this.uiButton2.ShowFocusLine = true;
this.uiButton2.ShowTips = true; this.uiButton2.ShowTips = true;
this.uiButton2.Size = new System.Drawing.Size(100, 35); this.uiButton2.Size = new System.Drawing.Size(100, 35);
this.uiButton2.Style = Sunny.UI.UIStyle.Custom;
this.uiButton2.StyleCustomMode = true; this.uiButton2.StyleCustomMode = true;
this.uiButton2.TabIndex = 60; this.uiButton2.TabIndex = 60;
this.uiButton2.Text = "Blue"; this.uiButton2.Text = "Blue";
@ -992,11 +1011,69 @@ namespace Sunny.UI.Demo
this.uiSwitch6.TabIndex = 117; this.uiSwitch6.TabIndex = 117;
this.uiSwitch6.Text = "uiSwitch6"; this.uiSwitch6.Text = "uiSwitch6";
// //
// uiMenuButton1
//
this.uiMenuButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiMenuButton1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiMenuButton1.Location = new System.Drawing.Point(30, 554);
this.uiMenuButton1.Menu = this.uiContextMenuStrip1;
this.uiMenuButton1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiMenuButton1.Name = "uiMenuButton1";
this.uiMenuButton1.Size = new System.Drawing.Size(180, 35);
this.uiMenuButton1.Symbol = 361642;
this.uiMenuButton1.TabIndex = 118;
this.uiMenuButton1.Text = "下拉菜单按钮";
this.uiMenuButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
//
// uiLine6
//
this.uiLine6.BackColor = System.Drawing.Color.Transparent;
this.uiLine6.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine6.Location = new System.Drawing.Point(30, 516);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6";
this.uiLine6.Size = new System.Drawing.Size(312, 20);
this.uiLine6.TabIndex = 119;
this.uiLine6.Text = "UIMenuButton";
this.uiLine6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiContextMenuStrip1
//
this.uiContextMenuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(249)))), ((int)(((byte)(255)))));
this.uiContextMenuStrip1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiContextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.ToolStripMenuItem});
this.uiContextMenuStrip1.Name = "uiContextMenuStrip1";
this.uiContextMenuStrip1.Size = new System.Drawing.Size(123, 70);
//
// 菜单一ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "菜单一ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(122, 22);
this.ToolStripMenuItem.Text = "菜单一";
//
// 菜单二ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "菜单二ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(122, 22);
this.ToolStripMenuItem.Text = "菜单二";
//
// 菜单三ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "菜单三ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(122, 22);
this.ToolStripMenuItem.Text = "菜单三";
//
// FButton // FButton
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 614); this.ClientSize = new System.Drawing.Size(800, 614);
this.Controls.Add(this.uiLine6);
this.Controls.Add(this.uiMenuButton1);
this.Controls.Add(this.uiSymbolButton24); this.Controls.Add(this.uiSymbolButton24);
this.Controls.Add(this.uiSwitch6); this.Controls.Add(this.uiSwitch6);
this.Controls.Add(this.uiSwitch5); this.Controls.Add(this.uiSwitch5);
@ -1060,6 +1137,7 @@ namespace Sunny.UI.Demo
((System.ComponentModel.ISupportInitialize)(this.uiImageButton3)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.uiImageButton3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.uiImageButton2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.uiImageButton1)).EndInit();
this.uiContextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@ -1120,5 +1198,11 @@ namespace Sunny.UI.Demo
private UIToolTip uiToolTip1; private UIToolTip uiToolTip1;
private UISwitch uiSwitch5; private UISwitch uiSwitch5;
private UISwitch uiSwitch6; private UISwitch uiSwitch6;
private UIMenuButton uiMenuButton1;
private UILine uiLine6;
private UIContextMenuStrip uiContextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
} }
} }

View File

@ -74,7 +74,7 @@ namespace Sunny.UI.Demo
private void uiSwitch1_ActiveChanging(object sender, System.ComponentModel.CancelEventArgs e) private void uiSwitch1_ActiveChanging(object sender, System.ComponentModel.CancelEventArgs e)
{ {
e.Cancel = !ShowAskDialog("您确认要改变当前开关的状态吗?"); e.Cancel = !this.ShowAskDialog("您确认要改变当前开关的状态吗?");
} }
} }
} }

View File

@ -120,4 +120,7 @@
<metadata name="uiToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="uiToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<metadata name="uiContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>133, 17</value>
</metadata>
</root> </root>

View File

@ -48,66 +48,72 @@ namespace Sunny.UI.Demo
// //
this.uiButton5.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton5.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton5.Font = new System.Drawing.Font("宋体", 12F); this.uiButton5.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton5.Location = new System.Drawing.Point(454, 345); this.uiButton5.Location = new System.Drawing.Point(454, 366);
this.uiButton5.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton5.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton5.Name = "uiButton5"; this.uiButton5.Name = "uiButton5";
this.uiButton5.Size = new System.Drawing.Size(100, 35); this.uiButton5.Size = new System.Drawing.Size(100, 35);
this.uiButton5.TabIndex = 57; this.uiButton5.TabIndex = 57;
this.uiButton5.Text = "清空"; this.uiButton5.Text = "清空";
this.uiButton5.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton5.Click += new System.EventHandler(this.uiButton5_Click); this.uiButton5.Click += new System.EventHandler(this.uiButton5_Click);
// //
// uiButton4 // uiButton4
// //
this.uiButton4.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton4.Font = new System.Drawing.Font("宋体", 12F); this.uiButton4.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton4.Location = new System.Drawing.Point(348, 345); this.uiButton4.Location = new System.Drawing.Point(348, 366);
this.uiButton4.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton4.Name = "uiButton4"; this.uiButton4.Name = "uiButton4";
this.uiButton4.Size = new System.Drawing.Size(100, 35); this.uiButton4.Size = new System.Drawing.Size(100, 35);
this.uiButton4.TabIndex = 56; this.uiButton4.TabIndex = 56;
this.uiButton4.Text = "选择"; this.uiButton4.Text = "选择";
this.uiButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click); this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click);
// //
// uiButton3 // uiButton3
// //
this.uiButton3.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton3.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton3.Font = new System.Drawing.Font("宋体", 12F); this.uiButton3.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton3.Location = new System.Drawing.Point(242, 345); this.uiButton3.Location = new System.Drawing.Point(242, 366);
this.uiButton3.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton3.Name = "uiButton3"; this.uiButton3.Name = "uiButton3";
this.uiButton3.Size = new System.Drawing.Size(100, 35); this.uiButton3.Size = new System.Drawing.Size(100, 35);
this.uiButton3.TabIndex = 55; this.uiButton3.TabIndex = 55;
this.uiButton3.Text = "反选"; this.uiButton3.Text = "反选";
this.uiButton3.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton3.Click += new System.EventHandler(this.uiButton3_Click); this.uiButton3.Click += new System.EventHandler(this.uiButton3_Click);
// //
// uiButton2 // uiButton2
// //
this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton2.Font = new System.Drawing.Font("宋体", 12F); this.uiButton2.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton2.Location = new System.Drawing.Point(136, 345); this.uiButton2.Location = new System.Drawing.Point(136, 366);
this.uiButton2.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton2.Name = "uiButton2"; this.uiButton2.Name = "uiButton2";
this.uiButton2.Size = new System.Drawing.Size(100, 35); this.uiButton2.Size = new System.Drawing.Size(100, 35);
this.uiButton2.TabIndex = 54; this.uiButton2.TabIndex = 54;
this.uiButton2.Text = "全不选"; this.uiButton2.Text = "全不选";
this.uiButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton2.Click += new System.EventHandler(this.uiButton2_Click); this.uiButton2.Click += new System.EventHandler(this.uiButton2_Click);
// //
// uiButton1 // uiButton1
// //
this.uiButton1.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton1.Font = new System.Drawing.Font("宋体", 12F); this.uiButton1.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton1.Location = new System.Drawing.Point(30, 345); this.uiButton1.Location = new System.Drawing.Point(30, 366);
this.uiButton1.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton1.Name = "uiButton1"; this.uiButton1.Name = "uiButton1";
this.uiButton1.Size = new System.Drawing.Size(100, 35); this.uiButton1.Size = new System.Drawing.Size(100, 35);
this.uiButton1.TabIndex = 53; this.uiButton1.TabIndex = 53;
this.uiButton1.Text = "全选"; this.uiButton1.Text = "全选";
this.uiButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click); this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click);
// //
// uiCheckBoxGroup1 // uiCheckBoxGroup1
// //
this.uiCheckBoxGroup1.ColumnCount = 2; this.uiCheckBoxGroup1.ColumnCount = 2;
this.uiCheckBoxGroup1.Font = new System.Drawing.Font("宋体", 12F); this.uiCheckBoxGroup1.Font = new System.Drawing.Font("宋体", 12F);
this.uiCheckBoxGroup1.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(236)))), ((int)(((byte)(255)))));
this.uiCheckBoxGroup1.Items.AddRange(new object[] { this.uiCheckBoxGroup1.Items.AddRange(new object[] {
"0", "0",
"1", "1",
@ -125,16 +131,18 @@ namespace Sunny.UI.Demo
this.uiCheckBoxGroup1.MinimumSize = new System.Drawing.Size(1, 1); this.uiCheckBoxGroup1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBoxGroup1.Name = "uiCheckBoxGroup1"; this.uiCheckBoxGroup1.Name = "uiCheckBoxGroup1";
this.uiCheckBoxGroup1.Padding = new System.Windows.Forms.Padding(0, 32, 0, 0); this.uiCheckBoxGroup1.Padding = new System.Windows.Forms.Padding(0, 32, 0, 0);
this.uiCheckBoxGroup1.Size = new System.Drawing.Size(670, 211); this.uiCheckBoxGroup1.SelectedIndexes = ((System.Collections.Generic.List<int>)(resources.GetObject("uiCheckBoxGroup1.SelectedIndexes")));
this.uiCheckBoxGroup1.Size = new System.Drawing.Size(670, 226);
this.uiCheckBoxGroup1.TabIndex = 52; this.uiCheckBoxGroup1.TabIndex = 52;
this.uiCheckBoxGroup1.Text = "UICheckBoxGroup"; this.uiCheckBoxGroup1.Text = "UICheckBoxGroup";
this.uiCheckBoxGroup1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; this.uiCheckBoxGroup1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiCheckBoxGroup1.ValueChanged += new Sunny.UI.UICheckBoxGroup.OnValueChanged(this.uiCheckBoxGroup1_ValueChanged); this.uiCheckBoxGroup1.ValueChanged += new Sunny.UI.UICheckBoxGroup.OnValueChanged(this.uiCheckBoxGroup1_ValueChanged);
// //
// uiCheckBox2 // uiCheckBox2
// //
this.uiCheckBox2.Cursor = System.Windows.Forms.Cursors.Hand; this.uiCheckBox2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox2.Font = new System.Drawing.Font("宋体", 12F); this.uiCheckBox2.Font = new System.Drawing.Font("宋体", 12F);
this.uiCheckBox2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox2.Location = new System.Drawing.Point(192, 83); this.uiCheckBox2.Location = new System.Drawing.Point(192, 83);
this.uiCheckBox2.MinimumSize = new System.Drawing.Size(1, 1); this.uiCheckBox2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox2.Name = "uiCheckBox2"; this.uiCheckBox2.Name = "uiCheckBox2";
@ -148,6 +156,7 @@ namespace Sunny.UI.Demo
this.uiCheckBox4.Cursor = System.Windows.Forms.Cursors.Hand; this.uiCheckBox4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox4.Enabled = false; this.uiCheckBox4.Enabled = false;
this.uiCheckBox4.Font = new System.Drawing.Font("宋体", 12F); this.uiCheckBox4.Font = new System.Drawing.Font("宋体", 12F);
this.uiCheckBox4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox4.Location = new System.Drawing.Point(516, 81); this.uiCheckBox4.Location = new System.Drawing.Point(516, 81);
this.uiCheckBox4.MinimumSize = new System.Drawing.Size(1, 1); this.uiCheckBox4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox4.Name = "uiCheckBox4"; this.uiCheckBox4.Name = "uiCheckBox4";
@ -162,6 +171,7 @@ namespace Sunny.UI.Demo
this.uiCheckBox3.Cursor = System.Windows.Forms.Cursors.Hand; this.uiCheckBox3.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox3.Enabled = false; this.uiCheckBox3.Enabled = false;
this.uiCheckBox3.Font = new System.Drawing.Font("宋体", 12F); this.uiCheckBox3.Font = new System.Drawing.Font("宋体", 12F);
this.uiCheckBox3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox3.Location = new System.Drawing.Point(354, 81); this.uiCheckBox3.Location = new System.Drawing.Point(354, 81);
this.uiCheckBox3.MinimumSize = new System.Drawing.Size(1, 1); this.uiCheckBox3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox3.Name = "uiCheckBox3"; this.uiCheckBox3.Name = "uiCheckBox3";
@ -172,7 +182,9 @@ namespace Sunny.UI.Demo
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(30, 55); this.uiLine1.Location = new System.Drawing.Point(30, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -186,6 +198,7 @@ namespace Sunny.UI.Demo
this.uiCheckBox1.Checked = true; this.uiCheckBox1.Checked = true;
this.uiCheckBox1.Cursor = System.Windows.Forms.Cursors.Hand; this.uiCheckBox1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox1.Font = new System.Drawing.Font("宋体", 12F); this.uiCheckBox1.Font = new System.Drawing.Font("宋体", 12F);
this.uiCheckBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox1.Location = new System.Drawing.Point(30, 83); this.uiCheckBox1.Location = new System.Drawing.Point(30, 83);
this.uiCheckBox1.MinimumSize = new System.Drawing.Size(1, 1); this.uiCheckBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox1.Name = "uiCheckBox1"; this.uiCheckBox1.Name = "uiCheckBox1";
@ -199,12 +212,13 @@ namespace Sunny.UI.Demo
// //
this.uiButton6.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton6.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton6.Font = new System.Drawing.Font("宋体", 12F); this.uiButton6.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton6.Location = new System.Drawing.Point(560, 345); this.uiButton6.Location = new System.Drawing.Point(560, 366);
this.uiButton6.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton6.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton6.Name = "uiButton6"; this.uiButton6.Name = "uiButton6";
this.uiButton6.Size = new System.Drawing.Size(100, 35); this.uiButton6.Size = new System.Drawing.Size(100, 35);
this.uiButton6.TabIndex = 58; this.uiButton6.TabIndex = 58;
this.uiButton6.Text = "单选"; this.uiButton6.Text = "单选";
this.uiButton6.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton6.Click += new System.EventHandler(this.uiButton6_Click); this.uiButton6.Click += new System.EventHandler(this.uiButton6_Click);
// //
// FCheckBox // FCheckBox

View File

@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text;
namespace Sunny.UI.Demo namespace Sunny.UI.Demo
{ {
@ -37,17 +36,12 @@ namespace Sunny.UI.Demo
uiCheckBoxGroup1.Clear(); uiCheckBoxGroup1.Clear();
} }
private void uiCheckBoxGroup1_ValueChanged(object sender, int index, string text, bool isChecked) private void uiCheckBoxGroup1_ValueChanged(object sender, CheckBoxGroupEventArgs e)
{ {
StringBuilder sb = new StringBuilder(); if (e.Index >= 0)
sb.Append("SelectedIndexes: "); Console.WriteLine("SelectedIndex: " + e.Index + ", SelectedText: " + e.Text + ", Checked: " + e.Checked + "\n" + "SelectedIndexes: " + string.Join(", ", e.SelectedIndexes));
foreach (var selectedIndex in uiCheckBoxGroup1.SelectedIndexes) else
{ Console.WriteLine("SelectedIndexes: " + string.Join(", ", e.SelectedIndexes));
sb.Append(selectedIndex);
sb.Append(", ");
}
Console.WriteLine("SelectedIndex: " + index + ", SelectedText: " + text + "\n" + sb.ToString());
} }
private void uiCheckBox1_CheckedChanged(object sender, EventArgs e) private void uiCheckBox1_CheckedChanged(object sender, EventArgs e)

View File

@ -117,4 +117,13 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="uiCheckBoxGroup1.SelectedIndexes" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAJoBbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1u
ZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIG1zY29ybGliLCBWZXJzaW9u
PTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUB
AAAAL1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLkludDMyAwAAAAZfaXRl
bXMFX3NpemUIX3ZlcnNpb24HAAAICAgCAAAACQMAAAAAAAAAAAAAAA8DAAAAAAAAAAgL
</value>
</data>
</root> </root>

View File

@ -30,54 +30,54 @@ namespace Sunny.UI.Demo
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("节点0"); System.Windows.Forms.TreeNode treeNode33 = new System.Windows.Forms.TreeNode("节点0");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("节点1"); System.Windows.Forms.TreeNode treeNode34 = new System.Windows.Forms.TreeNode("节点1");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode35 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode36 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode37 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode1, treeNode33,
treeNode2, treeNode34,
treeNode3, treeNode35,
treeNode4}); treeNode36});
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("节点4"); System.Windows.Forms.TreeNode treeNode38 = new System.Windows.Forms.TreeNode("节点4");
System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("节点5"); System.Windows.Forms.TreeNode treeNode39 = new System.Windows.Forms.TreeNode("节点5");
System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("节点6"); System.Windows.Forms.TreeNode treeNode40 = new System.Windows.Forms.TreeNode("节点6");
System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("节点7"); System.Windows.Forms.TreeNode treeNode41 = new System.Windows.Forms.TreeNode("节点7");
System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode42 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] {
treeNode6, treeNode38,
treeNode7, treeNode39,
treeNode8, treeNode40,
treeNode9}); treeNode41});
System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode43 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode44 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("节点00"); System.Windows.Forms.TreeNode treeNode45 = new System.Windows.Forms.TreeNode("节点00");
System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("节点01"); System.Windows.Forms.TreeNode treeNode46 = new System.Windows.Forms.TreeNode("节点01");
System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("节点02"); System.Windows.Forms.TreeNode treeNode47 = new System.Windows.Forms.TreeNode("节点02");
System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("节点03"); System.Windows.Forms.TreeNode treeNode48 = new System.Windows.Forms.TreeNode("节点03");
System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode49 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode13, treeNode45,
treeNode14, treeNode46,
treeNode15, treeNode47,
treeNode16}); treeNode48});
System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("节点11"); System.Windows.Forms.TreeNode treeNode50 = new System.Windows.Forms.TreeNode("节点11");
System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("节点12"); System.Windows.Forms.TreeNode treeNode51 = new System.Windows.Forms.TreeNode("节点12");
System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("节点13"); System.Windows.Forms.TreeNode treeNode52 = new System.Windows.Forms.TreeNode("节点13");
System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("节点14"); System.Windows.Forms.TreeNode treeNode53 = new System.Windows.Forms.TreeNode("节点14");
System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode54 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] {
treeNode18, treeNode50,
treeNode19, treeNode51,
treeNode20, treeNode52,
treeNode21}); treeNode53});
System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode55 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode56 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("节点0"); System.Windows.Forms.TreeNode treeNode57 = new System.Windows.Forms.TreeNode("节点0");
System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("节点1"); System.Windows.Forms.TreeNode treeNode58 = new System.Windows.Forms.TreeNode("节点1");
System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode59 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode60 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("节点0"); System.Windows.Forms.TreeNode treeNode61 = new System.Windows.Forms.TreeNode("节点0");
System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("节点1"); System.Windows.Forms.TreeNode treeNode62 = new System.Windows.Forms.TreeNode("节点1");
System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode63 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode64 = new System.Windows.Forms.TreeNode("节点3");
this.uiComboTreeView3 = new Sunny.UI.UIComboTreeView(); this.uiComboTreeView3 = new Sunny.UI.UIComboTreeView();
this.uiComboTreeView4 = new Sunny.UI.UIComboTreeView(); this.uiComboTreeView4 = new Sunny.UI.UIComboTreeView();
this.uiComboTreeView2 = new Sunny.UI.UIComboTreeView(); this.uiComboTreeView2 = new Sunny.UI.UIComboTreeView();
@ -109,6 +109,12 @@ namespace Sunny.UI.Demo
this.uiNumPadTextBox2 = new Sunny.UI.UINumPadTextBox(); this.uiNumPadTextBox2 = new Sunny.UI.UINumPadTextBox();
this.uiNumPadTextBox3 = new Sunny.UI.UINumPadTextBox(); this.uiNumPadTextBox3 = new Sunny.UI.UINumPadTextBox();
this.uiNumPadTextBox4 = new Sunny.UI.UINumPadTextBox(); this.uiNumPadTextBox4 = new Sunny.UI.UINumPadTextBox();
this.uiLine11 = new Sunny.UI.UILine();
this.uiDatePicker4 = new Sunny.UI.UIDatePicker();
this.uiDatetimePicker2 = new Sunny.UI.UIDatetimePicker();
this.uiTimePicker2 = new Sunny.UI.UITimePicker();
this.uiNumPadTextBox5 = new Sunny.UI.UINumPadTextBox();
this.uiDatePicker5 = new Sunny.UI.UIDatePicker();
this.SuspendLayout(); this.SuspendLayout();
// //
// uiComboTreeView3 // uiComboTreeView3
@ -121,38 +127,39 @@ namespace Sunny.UI.Demo
this.uiComboTreeView3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboTreeView3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboTreeView3.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboTreeView3.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboTreeView3.Name = "uiComboTreeView3"; this.uiComboTreeView3.Name = "uiComboTreeView3";
treeNode1.Name = "节点0"; treeNode33.Name = "节点0";
treeNode1.Text = "节点0"; treeNode33.Text = "节点0";
treeNode2.Name = "节点1"; treeNode34.Name = "节点1";
treeNode2.Text = "节点1"; treeNode34.Text = "节点1";
treeNode3.Name = "节点2"; treeNode35.Name = "节点2";
treeNode3.Text = "节点2"; treeNode35.Text = "节点2";
treeNode4.Name = "节点3"; treeNode36.Name = "节点3";
treeNode4.Text = "节点3"; treeNode36.Text = "节点3";
treeNode5.Name = "节点0"; treeNode37.Name = "节点0";
treeNode5.Text = "节点0"; treeNode37.Text = "节点0";
treeNode6.Name = "节点4"; treeNode38.Name = "节点4";
treeNode6.Text = "节点4"; treeNode38.Text = "节点4";
treeNode7.Name = "节点5"; treeNode39.Name = "节点5";
treeNode7.Text = "节点5"; treeNode39.Text = "节点5";
treeNode8.Name = "节点6"; treeNode40.Name = "节点6";
treeNode8.Text = "节点6"; treeNode40.Text = "节点6";
treeNode9.Name = "节点7"; treeNode41.Name = "节点7";
treeNode9.Text = "节点7"; treeNode41.Text = "节点7";
treeNode10.Name = "节点1"; treeNode42.Name = "节点1";
treeNode10.Text = "节点1"; treeNode42.Text = "节点1";
treeNode11.Name = "节点2"; treeNode43.Name = "节点2";
treeNode11.Text = "节点2"; treeNode43.Text = "节点2";
treeNode12.Name = "节点3"; treeNode44.Name = "节点3";
treeNode12.Text = "节点3"; treeNode44.Text = "节点3";
this.uiComboTreeView3.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.uiComboTreeView3.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode5, treeNode37,
treeNode10, treeNode42,
treeNode11, treeNode43,
treeNode12}); treeNode44});
this.uiComboTreeView3.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboTreeView3.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboTreeView3.ShowLines = true; this.uiComboTreeView3.ShowLines = true;
this.uiComboTreeView3.Size = new System.Drawing.Size(150, 29); this.uiComboTreeView3.Size = new System.Drawing.Size(150, 29);
this.uiComboTreeView3.SymbolSize = 24;
this.uiComboTreeView3.TabIndex = 67; this.uiComboTreeView3.TabIndex = 67;
this.uiComboTreeView3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboTreeView3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboTreeView3.Watermark = ""; this.uiComboTreeView3.Watermark = "";
@ -166,38 +173,39 @@ namespace Sunny.UI.Demo
this.uiComboTreeView4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboTreeView4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboTreeView4.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboTreeView4.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboTreeView4.Name = "uiComboTreeView4"; this.uiComboTreeView4.Name = "uiComboTreeView4";
treeNode13.Name = "节点0"; treeNode45.Name = "节点0";
treeNode13.Text = "节点00"; treeNode45.Text = "节点00";
treeNode14.Name = "节点1"; treeNode46.Name = "节点1";
treeNode14.Text = "节点01"; treeNode46.Text = "节点01";
treeNode15.Name = "节点2"; treeNode47.Name = "节点2";
treeNode15.Text = "节点02"; treeNode47.Text = "节点02";
treeNode16.Name = "节点3"; treeNode48.Name = "节点3";
treeNode16.Text = "节点03"; treeNode48.Text = "节点03";
treeNode17.Name = "节点0"; treeNode49.Name = "节点0";
treeNode17.Text = "节点0"; treeNode49.Text = "节点0";
treeNode18.Name = "节点4"; treeNode50.Name = "节点4";
treeNode18.Text = "节点11"; treeNode50.Text = "节点11";
treeNode19.Name = "节点5"; treeNode51.Name = "节点5";
treeNode19.Text = "节点12"; treeNode51.Text = "节点12";
treeNode20.Name = "节点6"; treeNode52.Name = "节点6";
treeNode20.Text = "节点13"; treeNode52.Text = "节点13";
treeNode21.Name = "节点7"; treeNode53.Name = "节点7";
treeNode21.Text = "节点14"; treeNode53.Text = "节点14";
treeNode22.Name = "节点1"; treeNode54.Name = "节点1";
treeNode22.Text = "节点1"; treeNode54.Text = "节点1";
treeNode23.Name = "节点2"; treeNode55.Name = "节点2";
treeNode23.Text = "节点2"; treeNode55.Text = "节点2";
treeNode24.Name = "节点3"; treeNode56.Name = "节点3";
treeNode24.Text = "节点3"; treeNode56.Text = "节点3";
this.uiComboTreeView4.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.uiComboTreeView4.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode17, treeNode49,
treeNode22, treeNode54,
treeNode23, treeNode55,
treeNode24}); treeNode56});
this.uiComboTreeView4.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboTreeView4.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboTreeView4.ShowLines = true; this.uiComboTreeView4.ShowLines = true;
this.uiComboTreeView4.Size = new System.Drawing.Size(150, 29); this.uiComboTreeView4.Size = new System.Drawing.Size(150, 29);
this.uiComboTreeView4.SymbolSize = 24;
this.uiComboTreeView4.TabIndex = 66; this.uiComboTreeView4.TabIndex = 66;
this.uiComboTreeView4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboTreeView4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboTreeView4.Watermark = ""; this.uiComboTreeView4.Watermark = "";
@ -212,21 +220,22 @@ namespace Sunny.UI.Demo
this.uiComboTreeView2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboTreeView2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboTreeView2.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboTreeView2.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboTreeView2.Name = "uiComboTreeView2"; this.uiComboTreeView2.Name = "uiComboTreeView2";
treeNode25.Name = "节点0"; treeNode57.Name = "节点0";
treeNode25.Text = "节点0"; treeNode57.Text = "节点0";
treeNode26.Name = "节点1"; treeNode58.Name = "节点1";
treeNode26.Text = "节点1"; treeNode58.Text = "节点1";
treeNode27.Name = "节点2"; treeNode59.Name = "节点2";
treeNode27.Text = "节点2"; treeNode59.Text = "节点2";
treeNode28.Name = "节点3"; treeNode60.Name = "节点3";
treeNode28.Text = "节点3"; treeNode60.Text = "节点3";
this.uiComboTreeView2.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.uiComboTreeView2.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode25, treeNode57,
treeNode26, treeNode58,
treeNode27, treeNode59,
treeNode28}); treeNode60});
this.uiComboTreeView2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboTreeView2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboTreeView2.Size = new System.Drawing.Size(150, 29); this.uiComboTreeView2.Size = new System.Drawing.Size(150, 29);
this.uiComboTreeView2.SymbolSize = 24;
this.uiComboTreeView2.TabIndex = 65; this.uiComboTreeView2.TabIndex = 65;
this.uiComboTreeView2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboTreeView2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboTreeView2.Watermark = "水印文字"; this.uiComboTreeView2.Watermark = "水印文字";
@ -234,7 +243,9 @@ namespace Sunny.UI.Demo
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(386, 294); this.uiLine1.Location = new System.Drawing.Point(386, 294);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -252,28 +263,31 @@ namespace Sunny.UI.Demo
this.uiComboTreeView1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboTreeView1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboTreeView1.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboTreeView1.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboTreeView1.Name = "uiComboTreeView1"; this.uiComboTreeView1.Name = "uiComboTreeView1";
treeNode29.Name = "节点0"; treeNode61.Name = "节点0";
treeNode29.Text = "节点0"; treeNode61.Text = "节点0";
treeNode30.Name = "节点1"; treeNode62.Name = "节点1";
treeNode30.Text = "节点1"; treeNode62.Text = "节点1";
treeNode31.Name = "节点2"; treeNode63.Name = "节点2";
treeNode31.Text = "节点2"; treeNode63.Text = "节点2";
treeNode32.Name = "节点3"; treeNode64.Name = "节点3";
treeNode32.Text = "节点3"; treeNode64.Text = "节点3";
this.uiComboTreeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.uiComboTreeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode29, treeNode61,
treeNode30, treeNode62,
treeNode31, treeNode63,
treeNode32}); treeNode64});
this.uiComboTreeView1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboTreeView1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboTreeView1.Size = new System.Drawing.Size(150, 29); this.uiComboTreeView1.Size = new System.Drawing.Size(150, 29);
this.uiComboTreeView1.SymbolSize = 24;
this.uiComboTreeView1.TabIndex = 63; this.uiComboTreeView1.TabIndex = 63;
this.uiComboTreeView1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboTreeView1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboTreeView1.Watermark = ""; this.uiComboTreeView1.Watermark = "";
// //
// uiLine8 // uiLine8
// //
this.uiLine8.BackColor = System.Drawing.Color.Transparent;
this.uiLine8.Font = new System.Drawing.Font("宋体", 12F); this.uiLine8.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine8.Location = new System.Drawing.Point(30, 337); this.uiLine8.Location = new System.Drawing.Point(30, 337);
this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine8.Name = "uiLine8"; this.uiLine8.Name = "uiLine8";
@ -296,6 +310,7 @@ namespace Sunny.UI.Demo
this.uiDatetimePicker1.Size = new System.Drawing.Size(308, 29); this.uiDatetimePicker1.Size = new System.Drawing.Size(308, 29);
this.uiDatetimePicker1.SymbolDropDown = 61555; this.uiDatetimePicker1.SymbolDropDown = 61555;
this.uiDatetimePicker1.SymbolNormal = 61555; this.uiDatetimePicker1.SymbolNormal = 61555;
this.uiDatetimePicker1.SymbolSize = 24;
this.uiDatetimePicker1.TabIndex = 61; this.uiDatetimePicker1.TabIndex = 61;
this.uiDatetimePicker1.Text = "2020-06-02 17:57:28"; this.uiDatetimePicker1.Text = "2020-06-02 17:57:28";
this.uiDatetimePicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiDatetimePicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
@ -314,6 +329,7 @@ namespace Sunny.UI.Demo
this.uiColorPicker1.Name = "uiColorPicker1"; this.uiColorPicker1.Name = "uiColorPicker1";
this.uiColorPicker1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiColorPicker1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiColorPicker1.Size = new System.Drawing.Size(150, 29); this.uiColorPicker1.Size = new System.Drawing.Size(150, 29);
this.uiColorPicker1.SymbolSize = 24;
this.uiColorPicker1.TabIndex = 60; this.uiColorPicker1.TabIndex = 60;
this.uiColorPicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiColorPicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiColorPicker1.Watermark = ""; this.uiColorPicker1.Watermark = "";
@ -322,7 +338,9 @@ namespace Sunny.UI.Demo
// //
// uiLine7 // uiLine7
// //
this.uiLine7.BackColor = System.Drawing.Color.Transparent;
this.uiLine7.Font = new System.Drawing.Font("宋体", 12F); this.uiLine7.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine7.Location = new System.Drawing.Point(388, 55); this.uiLine7.Location = new System.Drawing.Point(388, 55);
this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine7.Name = "uiLine7"; this.uiLine7.Name = "uiLine7";
@ -333,7 +351,9 @@ namespace Sunny.UI.Demo
// //
// uiLine6 // uiLine6
// //
this.uiLine6.BackColor = System.Drawing.Color.Transparent;
this.uiLine6.Font = new System.Drawing.Font("宋体", 12F); this.uiLine6.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine6.Location = new System.Drawing.Point(30, 416); this.uiLine6.Location = new System.Drawing.Point(30, 416);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6"; this.uiLine6.Name = "uiLine6";
@ -356,6 +376,7 @@ namespace Sunny.UI.Demo
this.uiTimePicker1.Size = new System.Drawing.Size(150, 29); this.uiTimePicker1.Size = new System.Drawing.Size(150, 29);
this.uiTimePicker1.SymbolDropDown = 61555; this.uiTimePicker1.SymbolDropDown = 61555;
this.uiTimePicker1.SymbolNormal = 61555; this.uiTimePicker1.SymbolNormal = 61555;
this.uiTimePicker1.SymbolSize = 24;
this.uiTimePicker1.TabIndex = 57; this.uiTimePicker1.TabIndex = 57;
this.uiTimePicker1.Text = "23:41:39"; this.uiTimePicker1.Text = "23:41:39";
this.uiTimePicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiTimePicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
@ -365,7 +386,9 @@ namespace Sunny.UI.Demo
// //
// uiLine3 // uiLine3
// //
this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F); this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(30, 214); this.uiLine3.Location = new System.Drawing.Point(30, 214);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3"; this.uiLine3.Name = "uiLine3";
@ -376,7 +399,9 @@ namespace Sunny.UI.Demo
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(30, 55); this.uiLine2.Location = new System.Drawing.Point(30, 55);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
@ -402,6 +427,7 @@ namespace Sunny.UI.Demo
this.uiDatePicker1.Size = new System.Drawing.Size(150, 29); this.uiDatePicker1.Size = new System.Drawing.Size(150, 29);
this.uiDatePicker1.SymbolDropDown = 61555; this.uiDatePicker1.SymbolDropDown = 61555;
this.uiDatePicker1.SymbolNormal = 61555; this.uiDatePicker1.SymbolNormal = 61555;
this.uiDatePicker1.SymbolSize = 24;
this.uiDatePicker1.TabIndex = 54; this.uiDatePicker1.TabIndex = 54;
this.uiDatePicker1.Text = "2020"; this.uiDatePicker1.Text = "2020";
this.uiDatePicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiDatePicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
@ -417,6 +443,8 @@ namespace Sunny.UI.Demo
this.uiComboBox2.FillColor = System.Drawing.Color.White; this.uiComboBox2.FillColor = System.Drawing.Color.White;
this.uiComboBox2.FilterMaxCount = 50; this.uiComboBox2.FilterMaxCount = 50;
this.uiComboBox2.Font = new System.Drawing.Font("宋体", 12F); this.uiComboBox2.Font = new System.Drawing.Font("宋体", 12F);
this.uiComboBox2.ItemHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.uiComboBox2.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiComboBox2.Location = new System.Drawing.Point(188, 89); this.uiComboBox2.Location = new System.Drawing.Point(188, 89);
this.uiComboBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboBox2.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboBox2.MinimumSize = new System.Drawing.Size(63, 0);
@ -424,6 +452,7 @@ namespace Sunny.UI.Demo
this.uiComboBox2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboBox2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboBox2.ShowClearButton = true; this.uiComboBox2.ShowClearButton = true;
this.uiComboBox2.Size = new System.Drawing.Size(150, 29); this.uiComboBox2.Size = new System.Drawing.Size(150, 29);
this.uiComboBox2.SymbolSize = 24;
this.uiComboBox2.TabIndex = 53; this.uiComboBox2.TabIndex = 53;
this.uiComboBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboBox2.Watermark = "水印文字"; this.uiComboBox2.Watermark = "水印文字";
@ -434,6 +463,7 @@ namespace Sunny.UI.Demo
this.uiComboBox1.FillColor = System.Drawing.Color.White; this.uiComboBox1.FillColor = System.Drawing.Color.White;
this.uiComboBox1.FilterMaxCount = 50; this.uiComboBox1.FilterMaxCount = 50;
this.uiComboBox1.Font = new System.Drawing.Font("宋体", 12F); this.uiComboBox1.Font = new System.Drawing.Font("宋体", 12F);
this.uiComboBox1.ItemHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.uiComboBox1.Items.AddRange(new object[] { this.uiComboBox1.Items.AddRange(new object[] {
"1", "1",
"2", "2",
@ -447,6 +477,7 @@ namespace Sunny.UI.Demo
"14", "14",
"15", "15",
"16"}); "16"});
this.uiComboBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiComboBox1.Location = new System.Drawing.Point(30, 90); this.uiComboBox1.Location = new System.Drawing.Point(30, 90);
this.uiComboBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboBox1.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboBox1.MinimumSize = new System.Drawing.Size(63, 0);
@ -455,6 +486,7 @@ namespace Sunny.UI.Demo
this.uiComboBox1.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiComboBox1.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiComboBox1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom; this.uiComboBox1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom;
this.uiComboBox1.Size = new System.Drawing.Size(150, 29); this.uiComboBox1.Size = new System.Drawing.Size(150, 29);
this.uiComboBox1.SymbolSize = 24;
this.uiComboBox1.TabIndex = 52; this.uiComboBox1.TabIndex = 52;
this.uiComboBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboBox1.Watermark = "水印文字"; this.uiComboBox1.Watermark = "水印文字";
@ -477,6 +509,7 @@ namespace Sunny.UI.Demo
this.uiDatePicker2.Size = new System.Drawing.Size(150, 29); this.uiDatePicker2.Size = new System.Drawing.Size(150, 29);
this.uiDatePicker2.SymbolDropDown = 61555; this.uiDatePicker2.SymbolDropDown = 61555;
this.uiDatePicker2.SymbolNormal = 61555; this.uiDatePicker2.SymbolNormal = 61555;
this.uiDatePicker2.SymbolSize = 24;
this.uiDatePicker2.TabIndex = 71; this.uiDatePicker2.TabIndex = 71;
this.uiDatePicker2.Text = "2020-04"; this.uiDatePicker2.Text = "2020-04";
this.uiDatePicker2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiDatePicker2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
@ -498,6 +531,7 @@ namespace Sunny.UI.Demo
this.uiDatePicker3.Size = new System.Drawing.Size(150, 29); this.uiDatePicker3.Size = new System.Drawing.Size(150, 29);
this.uiDatePicker3.SymbolDropDown = 61555; this.uiDatePicker3.SymbolDropDown = 61555;
this.uiDatePicker3.SymbolNormal = 61555; this.uiDatePicker3.SymbolNormal = 61555;
this.uiDatePicker3.SymbolSize = 24;
this.uiDatePicker3.TabIndex = 72; this.uiDatePicker3.TabIndex = 72;
this.uiDatePicker3.Text = "2020-04-16"; this.uiDatePicker3.Text = "2020-04-16";
this.uiDatePicker3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiDatePicker3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
@ -507,7 +541,9 @@ namespace Sunny.UI.Demo
// //
// uiLine4 // uiLine4
// //
this.uiLine4.BackColor = System.Drawing.Color.Transparent;
this.uiLine4.Font = new System.Drawing.Font("宋体", 12F); this.uiLine4.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine4.Location = new System.Drawing.Point(386, 134); this.uiLine4.Location = new System.Drawing.Point(386, 134);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4"; this.uiLine4.Name = "uiLine4";
@ -527,15 +563,17 @@ namespace Sunny.UI.Demo
this.uiComboDataGridView1.Name = "uiComboDataGridView1"; this.uiComboDataGridView1.Name = "uiComboDataGridView1";
this.uiComboDataGridView1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboDataGridView1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboDataGridView1.Size = new System.Drawing.Size(308, 29); this.uiComboDataGridView1.Size = new System.Drawing.Size(308, 29);
this.uiComboDataGridView1.SymbolSize = 24;
this.uiComboDataGridView1.TabIndex = 74; this.uiComboDataGridView1.TabIndex = 74;
this.uiComboDataGridView1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboDataGridView1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboDataGridView1.Watermark = ""; this.uiComboDataGridView1.Watermark = "";
this.uiComboDataGridView1.SelectIndexChange += new Sunny.UI.UIDataGridView.OnSelectIndexChange(this.uiComboDataGridView1_SelectIndexChange_1);
this.uiComboDataGridView1.ValueChanged += new Sunny.UI.UIComboDataGridView.OnValueChanged(this.uiComboDataGridView1_ValueChanged); this.uiComboDataGridView1.ValueChanged += new Sunny.UI.UIComboDataGridView.OnValueChanged(this.uiComboDataGridView1_ValueChanged);
// //
// uiLine5 // uiLine5
// //
this.uiLine5.BackColor = System.Drawing.Color.Transparent;
this.uiLine5.Font = new System.Drawing.Font("宋体", 12F); this.uiLine5.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine5.Location = new System.Drawing.Point(30, 134); this.uiLine5.Location = new System.Drawing.Point(30, 134);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5"; this.uiLine5.Name = "uiLine5";
@ -551,6 +589,8 @@ namespace Sunny.UI.Demo
this.uiComboBox3.FillColor = System.Drawing.Color.White; this.uiComboBox3.FillColor = System.Drawing.Color.White;
this.uiComboBox3.FilterMaxCount = 50; this.uiComboBox3.FilterMaxCount = 50;
this.uiComboBox3.Font = new System.Drawing.Font("宋体", 12F); this.uiComboBox3.Font = new System.Drawing.Font("宋体", 12F);
this.uiComboBox3.ItemHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.uiComboBox3.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiComboBox3.Location = new System.Drawing.Point(188, 168); this.uiComboBox3.Location = new System.Drawing.Point(188, 168);
this.uiComboBox3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboBox3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboBox3.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboBox3.MinimumSize = new System.Drawing.Size(63, 0);
@ -558,6 +598,7 @@ namespace Sunny.UI.Demo
this.uiComboBox3.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboBox3.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboBox3.ShowFilter = true; this.uiComboBox3.ShowFilter = true;
this.uiComboBox3.Size = new System.Drawing.Size(150, 29); this.uiComboBox3.Size = new System.Drawing.Size(150, 29);
this.uiComboBox3.SymbolSize = 24;
this.uiComboBox3.TabIndex = 76; this.uiComboBox3.TabIndex = 76;
this.uiComboBox3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboBox3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboBox3.Watermark = ""; this.uiComboBox3.Watermark = "";
@ -569,6 +610,7 @@ namespace Sunny.UI.Demo
this.uiComboBox4.FillColor = System.Drawing.Color.White; this.uiComboBox4.FillColor = System.Drawing.Color.White;
this.uiComboBox4.FilterMaxCount = 50; this.uiComboBox4.FilterMaxCount = 50;
this.uiComboBox4.Font = new System.Drawing.Font("宋体", 12F); this.uiComboBox4.Font = new System.Drawing.Font("宋体", 12F);
this.uiComboBox4.ItemHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.uiComboBox4.Items.AddRange(new object[] { this.uiComboBox4.Items.AddRange(new object[] {
"1", "1",
"2", "2",
@ -588,6 +630,7 @@ namespace Sunny.UI.Demo
"114", "114",
"115", "115",
"116"}); "116"});
this.uiComboBox4.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiComboBox4.Location = new System.Drawing.Point(30, 169); this.uiComboBox4.Location = new System.Drawing.Point(30, 169);
this.uiComboBox4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboBox4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboBox4.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboBox4.MinimumSize = new System.Drawing.Size(63, 0);
@ -597,6 +640,7 @@ namespace Sunny.UI.Demo
this.uiComboBox4.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom; this.uiComboBox4.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom;
this.uiComboBox4.ShowFilter = true; this.uiComboBox4.ShowFilter = true;
this.uiComboBox4.Size = new System.Drawing.Size(150, 29); this.uiComboBox4.Size = new System.Drawing.Size(150, 29);
this.uiComboBox4.SymbolSize = 24;
this.uiComboBox4.TabIndex = 75; this.uiComboBox4.TabIndex = 75;
this.uiComboBox4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboBox4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboBox4.Watermark = "水印文字"; this.uiComboBox4.Watermark = "水印文字";
@ -613,6 +657,7 @@ namespace Sunny.UI.Demo
this.uiComboDataGridView2.Name = "uiComboDataGridView2"; this.uiComboDataGridView2.Name = "uiComboDataGridView2";
this.uiComboDataGridView2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboDataGridView2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboDataGridView2.Size = new System.Drawing.Size(308, 29); this.uiComboDataGridView2.Size = new System.Drawing.Size(308, 29);
this.uiComboDataGridView2.SymbolSize = 24;
this.uiComboDataGridView2.TabIndex = 79; this.uiComboDataGridView2.TabIndex = 79;
this.uiComboDataGridView2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboDataGridView2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiComboDataGridView2.Watermark = ""; this.uiComboDataGridView2.Watermark = "";
@ -620,7 +665,9 @@ namespace Sunny.UI.Demo
// //
// uiLine9 // uiLine9
// //
this.uiLine9.BackColor = System.Drawing.Color.Transparent;
this.uiLine9.Font = new System.Drawing.Font("宋体", 12F); this.uiLine9.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine9.Location = new System.Drawing.Point(386, 214); this.uiLine9.Location = new System.Drawing.Point(386, 214);
this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine9.Name = "uiLine9"; this.uiLine9.Name = "uiLine9";
@ -637,7 +684,9 @@ namespace Sunny.UI.Demo
// //
// uiLine10 // uiLine10
// //
this.uiLine10.BackColor = System.Drawing.Color.Transparent;
this.uiLine10.Font = new System.Drawing.Font("宋体", 12F); this.uiLine10.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine10.Location = new System.Drawing.Point(386, 416); this.uiLine10.Location = new System.Drawing.Point(386, 416);
this.uiLine10.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine10.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine10.Name = "uiLine10"; this.uiLine10.Name = "uiLine10";
@ -656,6 +705,7 @@ namespace Sunny.UI.Demo
this.uiNumPadTextBox1.Name = "uiNumPadTextBox1"; this.uiNumPadTextBox1.Name = "uiNumPadTextBox1";
this.uiNumPadTextBox1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiNumPadTextBox1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiNumPadTextBox1.Size = new System.Drawing.Size(150, 29); this.uiNumPadTextBox1.Size = new System.Drawing.Size(150, 29);
this.uiNumPadTextBox1.SymbolSize = 24;
this.uiNumPadTextBox1.TabIndex = 81; this.uiNumPadTextBox1.TabIndex = 81;
this.uiNumPadTextBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiNumPadTextBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiNumPadTextBox1.Watermark = ""; this.uiNumPadTextBox1.Watermark = "";
@ -671,6 +721,7 @@ namespace Sunny.UI.Demo
this.uiNumPadTextBox2.NumPadType = Sunny.UI.NumPadType.Integer; this.uiNumPadTextBox2.NumPadType = Sunny.UI.NumPadType.Integer;
this.uiNumPadTextBox2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiNumPadTextBox2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiNumPadTextBox2.Size = new System.Drawing.Size(150, 29); this.uiNumPadTextBox2.Size = new System.Drawing.Size(150, 29);
this.uiNumPadTextBox2.SymbolSize = 24;
this.uiNumPadTextBox2.TabIndex = 82; this.uiNumPadTextBox2.TabIndex = 82;
this.uiNumPadTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiNumPadTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiNumPadTextBox2.Watermark = ""; this.uiNumPadTextBox2.Watermark = "";
@ -687,6 +738,7 @@ namespace Sunny.UI.Demo
this.uiNumPadTextBox3.NumPadType = Sunny.UI.NumPadType.IDNumber; this.uiNumPadTextBox3.NumPadType = Sunny.UI.NumPadType.IDNumber;
this.uiNumPadTextBox3.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiNumPadTextBox3.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiNumPadTextBox3.Size = new System.Drawing.Size(150, 29); this.uiNumPadTextBox3.Size = new System.Drawing.Size(150, 29);
this.uiNumPadTextBox3.SymbolSize = 24;
this.uiNumPadTextBox3.TabIndex = 84; this.uiNumPadTextBox3.TabIndex = 84;
this.uiNumPadTextBox3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiNumPadTextBox3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiNumPadTextBox3.Watermark = ""; this.uiNumPadTextBox3.Watermark = "";
@ -702,15 +754,141 @@ namespace Sunny.UI.Demo
this.uiNumPadTextBox4.NumPadType = Sunny.UI.NumPadType.Double; this.uiNumPadTextBox4.NumPadType = Sunny.UI.NumPadType.Double;
this.uiNumPadTextBox4.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiNumPadTextBox4.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiNumPadTextBox4.Size = new System.Drawing.Size(150, 29); this.uiNumPadTextBox4.Size = new System.Drawing.Size(150, 29);
this.uiNumPadTextBox4.SymbolSize = 24;
this.uiNumPadTextBox4.TabIndex = 83; this.uiNumPadTextBox4.TabIndex = 83;
this.uiNumPadTextBox4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiNumPadTextBox4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiNumPadTextBox4.Watermark = ""; this.uiNumPadTextBox4.Watermark = "";
// //
// uiLine11
//
this.uiLine11.BackColor = System.Drawing.Color.Transparent;
this.uiLine11.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine11.Location = new System.Drawing.Point(30, 543);
this.uiLine11.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine11.Name = "uiLine11";
this.uiLine11.Size = new System.Drawing.Size(664, 20);
this.uiLine11.TabIndex = 85;
this.uiLine11.Text = "2X";
this.uiLine11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiDatePicker4
//
this.uiDatePicker4.CanEmpty = true;
this.uiDatePicker4.FillColor = System.Drawing.Color.White;
this.uiDatePicker4.Font = new System.Drawing.Font("宋体", 12F);
this.uiDatePicker4.Location = new System.Drawing.Point(30, 580);
this.uiDatePicker4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiDatePicker4.MaxLength = 10;
this.uiDatePicker4.MinimumSize = new System.Drawing.Size(63, 0);
this.uiDatePicker4.Name = "uiDatePicker4";
this.uiDatePicker4.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiDatePicker4.ShowToday = true;
this.uiDatePicker4.Size = new System.Drawing.Size(150, 29);
this.uiDatePicker4.SizeMultiple = 2;
this.uiDatePicker4.SymbolDropDown = 61555;
this.uiDatePicker4.SymbolNormal = 61555;
this.uiDatePicker4.SymbolSize = 24;
this.uiDatePicker4.TabIndex = 86;
this.uiDatePicker4.Text = "2020-04-16";
this.uiDatePicker4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiDatePicker4.Value = new System.DateTime(2020, 4, 16, 0, 0, 0, 0);
this.uiDatePicker4.Watermark = "";
//
// uiDatetimePicker2
//
this.uiDatetimePicker2.CanEmpty = true;
this.uiDatetimePicker2.FillColor = System.Drawing.Color.White;
this.uiDatetimePicker2.Font = new System.Drawing.Font("宋体", 12F);
this.uiDatetimePicker2.Location = new System.Drawing.Point(30, 619);
this.uiDatetimePicker2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiDatetimePicker2.MaxLength = 19;
this.uiDatetimePicker2.MinimumSize = new System.Drawing.Size(63, 0);
this.uiDatetimePicker2.Name = "uiDatetimePicker2";
this.uiDatetimePicker2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiDatetimePicker2.Size = new System.Drawing.Size(308, 29);
this.uiDatetimePicker2.SizeMultiple = 2;
this.uiDatetimePicker2.SymbolDropDown = 61555;
this.uiDatetimePicker2.SymbolNormal = 61555;
this.uiDatetimePicker2.SymbolSize = 24;
this.uiDatetimePicker2.TabIndex = 87;
this.uiDatetimePicker2.Text = "2020-06-02 17:57:28";
this.uiDatetimePicker2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiDatetimePicker2.Value = new System.DateTime(2020, 6, 2, 17, 57, 28, 203);
this.uiDatetimePicker2.Watermark = "";
//
// uiTimePicker2
//
this.uiTimePicker2.CanEmpty = true;
this.uiTimePicker2.FillColor = System.Drawing.Color.White;
this.uiTimePicker2.Font = new System.Drawing.Font("宋体", 12F);
this.uiTimePicker2.Location = new System.Drawing.Point(188, 580);
this.uiTimePicker2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTimePicker2.MaxLength = 8;
this.uiTimePicker2.MinimumSize = new System.Drawing.Size(63, 0);
this.uiTimePicker2.Name = "uiTimePicker2";
this.uiTimePicker2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiTimePicker2.Size = new System.Drawing.Size(150, 29);
this.uiTimePicker2.SizeMultiple = 2;
this.uiTimePicker2.SymbolDropDown = 61555;
this.uiTimePicker2.SymbolNormal = 61555;
this.uiTimePicker2.SymbolSize = 24;
this.uiTimePicker2.TabIndex = 88;
this.uiTimePicker2.Text = "23:41:39";
this.uiTimePicker2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiTimePicker2.Value = new System.DateTime(2020, 5, 29, 23, 41, 39, 684);
this.uiTimePicker2.Watermark = "";
//
// uiNumPadTextBox5
//
this.uiNumPadTextBox5.FillColor = System.Drawing.Color.White;
this.uiNumPadTextBox5.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiNumPadTextBox5.Location = new System.Drawing.Point(386, 580);
this.uiNumPadTextBox5.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiNumPadTextBox5.MinimumSize = new System.Drawing.Size(63, 0);
this.uiNumPadTextBox5.Name = "uiNumPadTextBox5";
this.uiNumPadTextBox5.NumPadType = Sunny.UI.NumPadType.Double;
this.uiNumPadTextBox5.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiNumPadTextBox5.Size = new System.Drawing.Size(150, 29);
this.uiNumPadTextBox5.SizeMultiple = 2;
this.uiNumPadTextBox5.SymbolSize = 24;
this.uiNumPadTextBox5.TabIndex = 89;
this.uiNumPadTextBox5.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiNumPadTextBox5.Watermark = "";
//
// uiDatePicker5
//
this.uiDatePicker5.CanEmpty = true;
this.uiDatePicker5.FillColor = System.Drawing.Color.White;
this.uiDatePicker5.Font = new System.Drawing.Font("宋体", 12F);
this.uiDatePicker5.Location = new System.Drawing.Point(188, 293);
this.uiDatePicker5.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiDatePicker5.MaxLength = 10;
this.uiDatePicker5.MinimumSize = new System.Drawing.Size(63, 0);
this.uiDatePicker5.Name = "uiDatePicker5";
this.uiDatePicker5.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiDatePicker5.ShowToday = true;
this.uiDatePicker5.Size = new System.Drawing.Size(150, 29);
this.uiDatePicker5.SymbolDropDown = 61555;
this.uiDatePicker5.SymbolNormal = 61555;
this.uiDatePicker5.SymbolSize = 24;
this.uiDatePicker5.TabIndex = 90;
this.uiDatePicker5.Text = "2020-04-16";
this.uiDatePicker5.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiDatePicker5.Value = new System.DateTime(2020, 4, 16, 0, 0, 0, 0);
this.uiDatePicker5.Watermark = "";
//
// FCombobox // FCombobox
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(765, 593); this.ClientSize = new System.Drawing.Size(765, 665);
this.Controls.Add(this.uiDatePicker5);
this.Controls.Add(this.uiNumPadTextBox5);
this.Controls.Add(this.uiTimePicker2);
this.Controls.Add(this.uiDatetimePicker2);
this.Controls.Add(this.uiDatePicker4);
this.Controls.Add(this.uiLine11);
this.Controls.Add(this.uiNumPadTextBox3); this.Controls.Add(this.uiNumPadTextBox3);
this.Controls.Add(this.uiNumPadTextBox4); this.Controls.Add(this.uiNumPadTextBox4);
this.Controls.Add(this.uiNumPadTextBox2); this.Controls.Add(this.uiNumPadTextBox2);
@ -746,6 +924,7 @@ namespace Sunny.UI.Demo
this.ShowTitle = true; this.ShowTitle = true;
this.Symbol = 61776; this.Symbol = 61776;
this.Text = "Combobox"; this.Text = "Combobox";
this.Shown += new System.EventHandler(this.FCombobox_Shown);
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@ -782,5 +961,11 @@ namespace Sunny.UI.Demo
private UINumPadTextBox uiNumPadTextBox2; private UINumPadTextBox uiNumPadTextBox2;
private UINumPadTextBox uiNumPadTextBox3; private UINumPadTextBox uiNumPadTextBox3;
private UINumPadTextBox uiNumPadTextBox4; private UINumPadTextBox uiNumPadTextBox4;
private UILine uiLine11;
private UIDatePicker uiDatePicker4;
private UIDatetimePicker uiDatetimePicker2;
private UITimePicker uiTimePicker2;
private UINumPadTextBox uiNumPadTextBox5;
private UIDatePicker uiDatePicker5;
} }
} }

View File

@ -36,31 +36,28 @@ namespace Sunny.UI.Demo
uiComboDataGridView1.DataGridView.Init(); uiComboDataGridView1.DataGridView.Init();
uiComboDataGridView1.ItemSize = new System.Drawing.Size(360, 240); uiComboDataGridView1.ItemSize = new System.Drawing.Size(360, 240);
uiComboDataGridView1.DataGridView.AddColumn("Column1", "Column1"); uiComboDataGridView1.DataGridView.AddColumn("数据列1", "Column1");
uiComboDataGridView1.DataGridView.AddColumn("Column2", "Column2"); uiComboDataGridView1.DataGridView.AddColumn("数据列2", "Column2");
uiComboDataGridView1.DataGridView.AddColumn("Column3", "Column3"); uiComboDataGridView1.DataGridView.AddColumn("数据列3", "Column3");
uiComboDataGridView1.DataGridView.ReadOnly = true; uiComboDataGridView1.DataGridView.ReadOnly = true;
uiComboDataGridView1.SelectIndexChange += UiComboDataGridView1_SelectIndexChange; uiComboDataGridView1.DataGridView.DataSource = dt;//用DataTable做数据源过滤用List不行
uiComboDataGridView1.ShowFilter = true; uiComboDataGridView1.FilterColumnName = "Column1;Column3"; //不设置则全部列过滤,可加分号过滤多列
uiComboDataGridView1.DataGridView.DataSource = dt;
uiComboDataGridView1.FilterColumnName = "Column1"; //不设置则全部列过滤
uiComboDataGridView2.DataGridView.Init(); uiComboDataGridView2.DataGridView.Init();
uiComboDataGridView2.DataGridView.MultiSelect = true;//设置可多选 uiComboDataGridView2.DataGridView.MultiSelect = true;//设置可多选
uiComboDataGridView2.ItemSize = new System.Drawing.Size(360, 240); uiComboDataGridView2.ItemSize = new System.Drawing.Size(360, 240);
uiComboDataGridView2.DataGridView.AddColumn("Column1", "Column1"); uiComboDataGridView2.DataGridView.AddColumn("数据列1", "Column1");
uiComboDataGridView2.DataGridView.AddColumn("Column2", "Column2"); uiComboDataGridView2.DataGridView.AddColumn("数据列2", "Column2");
uiComboDataGridView2.DataGridView.AddColumn("Column3", "Column3"); uiComboDataGridView2.DataGridView.AddColumn("数据列3", "Column3");
uiComboDataGridView2.DataGridView.ReadOnly = true; uiComboDataGridView2.DataGridView.ReadOnly = true;
uiComboDataGridView2.ShowFilter = true;
uiComboDataGridView2.DataGridView.DataSource = dt; uiComboDataGridView2.DataGridView.DataSource = dt;
uiComboDataGridView2.FilterColumnName = "Column1"; //不设置则全部列过滤 uiComboDataGridView2.FilterColumnName = "Column1"; //不设置则全部列过滤
uiComboBox1.SetTipsText(uiToolTip1, "Hello World."); uiComboBox1.SetTipsText(uiToolTip1, "Hello World.");
//日期选择框文本设置为空 uiDatePicker4.Value = uiDatePicker1.Value = uiDatePicker2.Value = uiDatePicker3.Value = DateTime.Now.Date;
uiDatePicker3.CanEmpty = true; uiDatetimePicker2.Value = uiDatetimePicker1.Value = DateTime.Now;
uiDatePicker3.Text = ""; uiTimePicker1.Value = uiTimePicker2.Value = DateTime.Now;
} }
private void UiComboDataGridView1_SelectIndexChange(object sender, int index) private void UiComboDataGridView1_SelectIndexChange(object sender, int index)
@ -117,24 +114,8 @@ namespace Sunny.UI.Demo
} }
} }
private void uiComboDataGridView1_ValueChanged(object sender, object value)
{
uiComboDataGridView1.Text = "";
if (value != null && value is DataGridViewRow)
{
DataGridViewRow row = (DataGridViewRow)value;
uiComboDataGridView1.Text = row.Cells["Column1"].Value.ToString();
}
}
private void uiComboDataGridView1_SelectIndexChange_1(object sender, int index)
{
uiComboDataGridView1.Text = dt.Rows[index]["Column1"].ToString();
}
private void uiDatePicker3_ValueChanged(object sender, DateTime value) private void uiDatePicker3_ValueChanged(object sender, DateTime value)
{ {
ShowInfoTip(uiDatePicker3.Value.DateString());
Console.WriteLine(uiDatePicker3.Value); Console.WriteLine(uiDatePicker3.Value);
} }
@ -152,16 +133,26 @@ namespace Sunny.UI.Demo
uiComboBox4.Text.WriteConsole(); uiComboBox4.Text.WriteConsole();
} }
private void uiComboDataGridView1_ValueChanged(object sender, object value)
{
uiComboDataGridView1.Text = "";
if (value != null && value is DataGridViewRow)
{
DataGridViewRow row = (DataGridViewRow)value;
uiComboDataGridView1.Text = row.Cells["数据列1"].Value.ToString();//通过ColumnName显示值
}
}
private void uiComboDataGridView2_ValueChanged(object sender, object value) private void uiComboDataGridView2_ValueChanged(object sender, object value)
{ {
uiComboDataGridView2.Text = ""; uiComboDataGridView2.Text = "";
if (value != null && value is DataGridViewSelectedRowCollection) if (value != null && value is DataGridViewSelectedRowCollection)
{ {
DataGridViewSelectedRowCollection collection = (DataGridViewSelectedRowCollection)value; DataGridViewSelectedRowCollection collection = (DataGridViewSelectedRowCollection)value;
foreach (var item in collection) foreach (object item in collection)
{ {
DataGridViewRow row = (DataGridViewRow)item; DataGridViewRow row = (DataGridViewRow)item;
uiComboDataGridView2.Text += row.Cells["Column1"].Value.ToString(); uiComboDataGridView2.Text += row.Cells[0].Value.ToString();//通过索引显示值
uiComboDataGridView2.Text += "; "; uiComboDataGridView2.Text += "; ";
} }
} }
@ -169,7 +160,14 @@ namespace Sunny.UI.Demo
private void uiComboBox1_TipsClick(object sender, EventArgs e) private void uiComboBox1_TipsClick(object sender, EventArgs e)
{ {
ShowInfoTip("Hello world."); this.ShowInfoTip("Hello world.");
}
private void FCombobox_Shown(object sender, EventArgs e)
{
//日期选择框文本设置为空
uiDatePicker5.CanEmpty = true;
uiDatePicker5.Text = "";
} }
} }
} }

View File

@ -12,7 +12,7 @@ namespace Sunny.UI.Demo
var styles = UIStyles.PopularStyles(); var styles = UIStyles.PopularStyles();
foreach (UIStyle style in styles) foreach (UIStyle style in styles)
{ {
ToolStripMenuItem item = new ToolStripMenuItem(style.DisplayText()) { Tag = style }; ToolStripMenuItem item = new ToolStripMenuItem(style.Description()) { Tag = style };
item.Click += Item_Click; item.Click += Item_Click;
uiContextMenuStrip1.Items.Add(item); uiContextMenuStrip1.Items.Add(item);
} }

View File

@ -38,6 +38,10 @@ namespace Sunny.UI.Demo
this.uiDataGridView1 = new Sunny.UI.UIDataGridView(); this.uiDataGridView1 = new Sunny.UI.UIDataGridView();
this.uiPagination1 = new Sunny.UI.UIPagination(); this.uiPagination1 = new Sunny.UI.UIPagination();
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.uiDataGridView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.uiDataGridView1)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
@ -72,7 +76,13 @@ namespace Sunny.UI.Demo
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.uiDataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; this.uiDataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
this.uiDataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.uiDataGridView1.ColumnHeadersHeight = 32;
this.uiDataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.uiDataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1,
this.Column2,
this.Column3,
this.Column4});
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.Color.White; dataGridViewCellStyle3.BackColor = System.Drawing.Color.White;
dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
@ -103,8 +113,6 @@ namespace Sunny.UI.Demo
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); dataGridViewCellStyle5.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle5; this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle5;
this.uiDataGridView1.RowTemplate.Height = 23; this.uiDataGridView1.RowTemplate.Height = 23;
this.uiDataGridView1.ScrollBarHandleWidth = 40;
this.uiDataGridView1.ScrollBarRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiDataGridView1.SelectedIndex = -1; this.uiDataGridView1.SelectedIndex = -1;
this.uiDataGridView1.Size = new System.Drawing.Size(800, 351); this.uiDataGridView1.Size = new System.Drawing.Size(800, 351);
this.uiDataGridView1.TabIndex = 6; this.uiDataGridView1.TabIndex = 6;
@ -112,6 +120,7 @@ namespace Sunny.UI.Demo
// uiPagination1 // uiPagination1
// //
this.uiPagination1.ActivePage = 20; this.uiPagination1.ActivePage = 20;
this.uiPagination1.ButtonFillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(128)))), ((int)(((byte)(204)))));
this.uiPagination1.CausesValidation = false; this.uiPagination1.CausesValidation = false;
this.uiPagination1.Dock = System.Windows.Forms.DockStyle.Bottom; this.uiPagination1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.uiPagination1.Font = new System.Drawing.Font("宋体", 12F); this.uiPagination1.Font = new System.Drawing.Font("宋体", 12F);
@ -131,6 +140,34 @@ namespace Sunny.UI.Demo
this.uiPagination1.TotalCount = 40000; this.uiPagination1.TotalCount = 40000;
this.uiPagination1.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.uiPagination1_PageChanged); this.uiPagination1.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.uiPagination1_PageChanged);
// //
// Column1
//
this.Column1.DataPropertyName = "Column1";
this.Column1.HeaderText = "数据列1";
this.Column1.Name = "Column1";
this.Column1.Width = 300;
//
// Column2
//
this.Column2.DataPropertyName = "Column2";
this.Column2.HeaderText = "数据列2";
this.Column2.Name = "Column2";
this.Column2.Width = 200;
//
// Column3
//
this.Column3.DataPropertyName = "Column3";
this.Column3.HeaderText = "数据列3";
this.Column3.Name = "Column3";
this.Column3.Width = 200;
//
// Column4
//
this.Column4.DataPropertyName = "Column4";
this.Column4.HeaderText = "数据列4";
this.Column4.Name = "Column4";
this.Column4.Width = 200;
//
// FDataGridView // FDataGridView
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
@ -154,5 +191,9 @@ namespace Sunny.UI.Demo
private UIPagination uiPagination1; private UIPagination uiPagination1;
private System.ComponentModel.BackgroundWorker backgroundWorker1; private System.ComponentModel.BackgroundWorker backgroundWorker1;
private UIDataGridView uiDataGridView1; private UIDataGridView uiDataGridView1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
} }
} }

View File

@ -1,21 +1,17 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
namespace Sunny.UI.Demo namespace Sunny.UI.Demo
{ {
public partial class FDataGridView : UIPage public partial class FDataGridView : UIPage
{ {
List<Data> datas = new List<Data>(); List<Data> dataList = new List<Data>();
DataTable dataTable = new DataTable("DataTable");
public FDataGridView() public FDataGridView()
{ {
InitializeComponent(); InitializeComponent();
//SunnyUI封装的加列函数也可以和原生的一样从Columns里面添加列
uiDataGridView1.AddColumn("Column1", "Column1", 100/*占比*/).SetFixedMode(200/*固定宽度*/);
uiDataGridView1.AddColumn("Column2", "Column2");
uiDataGridView1.AddColumn("Column3", "Column3");
uiDataGridView1.AddColumn("Column4", "Column4");
for (int i = 0; i < 3610; i++) for (int i = 0; i < 3610; i++)
{ {
Data data = new Data(); Data data = new Data();
@ -23,15 +19,23 @@ namespace Sunny.UI.Demo
data.Column2 = i.Mod(2) == 0 ? "A" : "B"; data.Column2 = i.Mod(2) == 0 ? "A" : "B";
data.Column3 = "编辑"; data.Column3 = "编辑";
data.Column4 = i.Mod(4) == 0; data.Column4 = i.Mod(4) == 0;
datas.Add(data); dataList.Add(data);
} }
dataTable.Columns.Add("Column1", typeof(string));
dataTable.Columns.Add("Column2", typeof(string));
dataTable.Columns.Add("Column3", typeof(string));
dataTable.Columns.Add("Column4", typeof(int));
uiDataGridView1.DataSource = dataTable;
//不自动生成列
uiDataGridView1.AutoGenerateColumns = false;
//设置分页控件总数 //设置分页控件总数
uiPagination1.TotalCount = datas.Count; uiPagination1.TotalCount = dataList.Count;
//设置分页控件每页数量 //设置分页控件每页数量
uiPagination1.PageSize = 50; uiPagination1.PageSize = 20;
uiDataGridView1.SelectIndexChange += uiDataGridView1_SelectIndexChange; uiDataGridView1.SelectIndexChange += uiDataGridView1_SelectIndexChange;
//设置统计绑定的表格 //设置统计绑定的表格
@ -70,19 +74,19 @@ namespace Sunny.UI.Demo
private void uiPagination1_PageChanged(object sender, object pagingSource, int pageIndex, int count) private void uiPagination1_PageChanged(object sender, object pagingSource, int pageIndex, int count)
{ {
//未连接数据库,通过模拟数据来实现 //未连接数据库,通过模拟数据来实现
//一般通过ORM的分页去取数据来填充 //一般通过ORM的分页、或者SQL语句分页去取数据来填充dataTable
//pageIndex第几页和界面对应从1开始取数据可能要用pageIndex - 1 //pageIndex第几页和界面对应从1开始取数据可能要用pageIndex - 1
//count单页数据量也就是PageSize值 //count单页数据量也就是PageSize值
List<Data> data = new List<Data>();
for (int i = (pageIndex - 1) * count; i < (pageIndex - 1) * count + count; i++) dataTable.Rows.Clear();
for (int i = (pageIndex - 1) * count; i < pageIndex * count; i++)
{ {
if (i >= datas.Count) continue; if (i >= dataList.Count) break;
data.Add(datas[i]); dataTable.Rows.Add(dataList[i].Column1, dataList[i].Column2, dataList[i].Column3, dataList[i].Column4);
} }
uiDataGridView1.DataSource = data;
uiDataGridViewFooter1.Clear(); uiDataGridViewFooter1.Clear();
uiDataGridViewFooter1["Column1"] = "合计:"; uiDataGridViewFooter1["Column1"] = "合计:" + pageIndex;
uiDataGridViewFooter1["Column2"] = "Column2_" + pageIndex; uiDataGridViewFooter1["Column2"] = "Column2_" + pageIndex;
uiDataGridViewFooter1["Column3"] = "Column3_" + pageIndex; uiDataGridViewFooter1["Column3"] = "Column3_" + pageIndex;
uiDataGridViewFooter1["Column4"] = "Column4_" + pageIndex; uiDataGridViewFooter1["Column4"] = "Column4_" + pageIndex;

View File

@ -117,6 +117,18 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>

View File

@ -34,14 +34,13 @@ namespace Sunny.UI.Demo
this.uiButton2 = new Sunny.UI.UIButton(); this.uiButton2 = new Sunny.UI.UIButton();
this.uiButton3 = new Sunny.UI.UIButton(); this.uiButton3 = new Sunny.UI.UIButton();
this.uiButton4 = new Sunny.UI.UIButton(); this.uiButton4 = new Sunny.UI.UIButton();
this.uiFlowLayoutPanel2 = new Sunny.UI.UIFlowLayoutPanel();
this.SuspendLayout(); this.SuspendLayout();
// //
// uiButton1 // uiButton1
// //
this.uiButton1.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton1.Font = new System.Drawing.Font("宋体", 12F); this.uiButton1.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton1.Location = new System.Drawing.Point(30, 462); this.uiButton1.Location = new System.Drawing.Point(30, 518);
this.uiButton1.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton1.Name = "uiButton1"; this.uiButton1.Name = "uiButton1";
this.uiButton1.Size = new System.Drawing.Size(100, 35); this.uiButton1.Size = new System.Drawing.Size(100, 35);
@ -59,7 +58,7 @@ namespace Sunny.UI.Demo
this.uiFlowLayoutPanel1.Name = "uiFlowLayoutPanel1"; this.uiFlowLayoutPanel1.Name = "uiFlowLayoutPanel1";
this.uiFlowLayoutPanel1.Padding = new System.Windows.Forms.Padding(2); this.uiFlowLayoutPanel1.Padding = new System.Windows.Forms.Padding(2);
this.uiFlowLayoutPanel1.ShowText = false; this.uiFlowLayoutPanel1.ShowText = false;
this.uiFlowLayoutPanel1.Size = new System.Drawing.Size(354, 390); this.uiFlowLayoutPanel1.Size = new System.Drawing.Size(746, 441);
this.uiFlowLayoutPanel1.TabIndex = 10; this.uiFlowLayoutPanel1.TabIndex = 10;
this.uiFlowLayoutPanel1.Text = "`"; this.uiFlowLayoutPanel1.Text = "`";
this.uiFlowLayoutPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; this.uiFlowLayoutPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
@ -68,7 +67,7 @@ namespace Sunny.UI.Demo
// //
this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton2.Font = new System.Drawing.Font("宋体", 12F); this.uiButton2.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton2.Location = new System.Drawing.Point(408, 462); this.uiButton2.Location = new System.Drawing.Point(408, 518);
this.uiButton2.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton2.Name = "uiButton2"; this.uiButton2.Name = "uiButton2";
this.uiButton2.Size = new System.Drawing.Size(100, 35); this.uiButton2.Size = new System.Drawing.Size(100, 35);
@ -82,7 +81,7 @@ namespace Sunny.UI.Demo
this.uiButton3.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton3.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton3.Enabled = false; this.uiButton3.Enabled = false;
this.uiButton3.Font = new System.Drawing.Font("宋体", 12F); this.uiButton3.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton3.Location = new System.Drawing.Point(157, 462); this.uiButton3.Location = new System.Drawing.Point(157, 518);
this.uiButton3.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton3.Name = "uiButton3"; this.uiButton3.Name = "uiButton3";
this.uiButton3.Size = new System.Drawing.Size(100, 35); this.uiButton3.Size = new System.Drawing.Size(100, 35);
@ -95,7 +94,7 @@ namespace Sunny.UI.Demo
// //
this.uiButton4.Cursor = System.Windows.Forms.Cursors.Hand; this.uiButton4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton4.Font = new System.Drawing.Font("宋体", 12F); this.uiButton4.Font = new System.Drawing.Font("宋体", 12F);
this.uiButton4.Location = new System.Drawing.Point(284, 462); this.uiButton4.Location = new System.Drawing.Point(284, 518);
this.uiButton4.MinimumSize = new System.Drawing.Size(1, 1); this.uiButton4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton4.Name = "uiButton4"; this.uiButton4.Name = "uiButton4";
this.uiButton4.Size = new System.Drawing.Size(100, 35); this.uiButton4.Size = new System.Drawing.Size(100, 35);
@ -104,27 +103,11 @@ namespace Sunny.UI.Demo
this.uiButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click); this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click);
// //
// uiFlowLayoutPanel2
//
this.uiFlowLayoutPanel2.Font = new System.Drawing.Font("宋体", 12F);
this.uiFlowLayoutPanel2.Location = new System.Drawing.Point(408, 55);
this.uiFlowLayoutPanel2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiFlowLayoutPanel2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiFlowLayoutPanel2.Name = "uiFlowLayoutPanel2";
this.uiFlowLayoutPanel2.Padding = new System.Windows.Forms.Padding(2);
this.uiFlowLayoutPanel2.ShowText = false;
this.uiFlowLayoutPanel2.Size = new System.Drawing.Size(354, 390);
this.uiFlowLayoutPanel2.TabIndex = 15;
this.uiFlowLayoutPanel2.Text = "`";
this.uiFlowLayoutPanel2.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
this.uiFlowLayoutPanel2.WrapContents = false;
//
// FFlowLayoutPanel // FFlowLayoutPanel
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 539); this.ClientSize = new System.Drawing.Size(800, 576);
this.Controls.Add(this.uiFlowLayoutPanel2);
this.Controls.Add(this.uiButton4); this.Controls.Add(this.uiButton4);
this.Controls.Add(this.uiButton3); this.Controls.Add(this.uiButton3);
this.Controls.Add(this.uiButton2); this.Controls.Add(this.uiButton2);
@ -146,6 +129,5 @@ namespace Sunny.UI.Demo
private UIButton uiButton2; private UIButton uiButton2;
private UIButton uiButton3; private UIButton uiButton3;
private UIButton uiButton4; private UIButton uiButton4;
private UIFlowLayoutPanel uiFlowLayoutPanel2;
} }
} }

View File

@ -15,18 +15,17 @@ namespace Sunny.UI.Demo
base.Init(); base.Init();
uiFlowLayoutPanel1.Clear(); uiFlowLayoutPanel1.Clear();
index = 0; index = 0;
for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
{ {
uiButton1.PerformClick(); uiButton1_Click(null, null);
} }
} }
private int index; private int index;
UIButton btn; UIFlowItem btn;
private void uiButton1_Click(object sender, System.EventArgs e) private void uiButton1_Click(object sender, System.EventArgs e)
{ {
btn = new UIButton(); btn = new UIFlowItem();
btn.SetDPIScale(); btn.SetDPIScale();
btn.Text = "Button" + index++.ToString("D2"); btn.Text = "Button" + index++.ToString("D2");
btn.Name = btn.Text; btn.Name = btn.Text;
@ -39,35 +38,28 @@ namespace Sunny.UI.Demo
//uiFlowLayoutPanel1.Panel.Controls.Add(btn); //uiFlowLayoutPanel1.Panel.Controls.Add(btn);
//不能用原生方法Controls.Add //不能用原生方法Controls.Add
//uiFlowLayoutPanel1.Controls.Add(btn); //----uiFlowLayoutPanel1.Controls.Add(btn);----
var box = new UIGroupBox();
box.Width = 100;
box.Height = uiFlowLayoutPanel2.Height - 32;
box.SetDPIScale();
box.Text = "Button" + index++.ToString("D2");
box.Name = box.Text;
uiFlowLayoutPanel2.Add(box);
uiButton3.Enabled = true; uiButton3.Enabled = true;
this.Render();
} }
private void Btn_Click(object sender, System.EventArgs e) private void Btn_Click(object sender, System.EventArgs e)
{ {
var button = (UIButton)sender; var button = (UIFlowItem)sender;
ShowInfoTip(button.Text); this.ShowInfoTip(button.Text);
} }
private void uiButton2_Click(object sender, System.EventArgs e) private void uiButton2_Click(object sender, System.EventArgs e)
{ {
//清除用Clear方法 //清除用Clear方法
uiFlowLayoutPanel1.Clear(); uiFlowLayoutPanel1.Clear();
uiFlowLayoutPanel2.Clear();
//或者用 //或者用
//uiFlowLayoutPanel1.Panel.Controls.Clear(); //uiFlowLayoutPanel1.Panel.Controls.Clear();
//不能用原生方法Controls.Clear //不能用原生方法Controls.Clear
//uiFlowLayoutPanel1.Controls.Clear(); //----uiFlowLayoutPanel1.Controls.Clear();----
uiButton3.Enabled = false; uiButton3.Enabled = false;
} }
@ -82,7 +74,7 @@ namespace Sunny.UI.Demo
//uiFlowLayoutPanel1.Panel.Controls.Remove(btn); //uiFlowLayoutPanel1.Panel.Controls.Remove(btn);
//不能用原生方法Controls.Remove //不能用原生方法Controls.Remove
//uiFlowLayoutPanel1.Controls.Remove(btn); //----uiFlowLayoutPanel1.Controls.Remove(btn);----
btn = null; btn = null;
} }
@ -99,9 +91,21 @@ namespace Sunny.UI.Demo
btn = uiFlowLayoutPanel1["Button01"]; btn = uiFlowLayoutPanel1["Button01"];
//通过名称和类型获取 //通过名称和类型获取
UIButton button = uiFlowLayoutPanel1.Get<UIButton>("Button01"); var button = uiFlowLayoutPanel1.Get<UIFlowItem>("Button01");
//遍历与原生方法不同UIFlowLayoutPanel是组合控件从其Panel控件遍历 //遍历,方法一
for (int i = 0; i < uiFlowLayoutPanel1.ControlCount; i++)
{
Console.WriteLine(uiFlowLayoutPanel1.Get(i).Name);
}
//遍历,方法二
foreach (Control item in uiFlowLayoutPanel1.AllControls)
{
Console.WriteLine(item.Name);
}
//遍历方法三与原生方法不同UIFlowLayoutPanel是组合控件从其Panel控件遍历
foreach (Control item in uiFlowLayoutPanel1.Panel.Controls) foreach (Control item in uiFlowLayoutPanel1.Panel.Controls)
{ {
Console.WriteLine(item.Name); Console.WriteLine(item.Name);

View File

@ -47,6 +47,7 @@ namespace Sunny.UI.Demo
this.uiButton1.Size = new System.Drawing.Size(100, 35); this.uiButton1.Size = new System.Drawing.Size(100, 35);
this.uiButton1.TabIndex = 29; this.uiButton1.TabIndex = 29;
this.uiButton1.Text = "Add Item"; this.uiButton1.Text = "Add Item";
this.uiButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click); this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click);
// //
// uiCheckBox1 // uiCheckBox1
@ -54,6 +55,7 @@ namespace Sunny.UI.Demo
this.uiCheckBox1.Checked = true; this.uiCheckBox1.Checked = true;
this.uiCheckBox1.Cursor = System.Windows.Forms.Cursors.Hand; this.uiCheckBox1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox1.Font = new System.Drawing.Font("宋体", 12F); this.uiCheckBox1.Font = new System.Drawing.Font("宋体", 12F);
this.uiCheckBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox1.Location = new System.Drawing.Point(352, 440); this.uiCheckBox1.Location = new System.Drawing.Point(352, 440);
this.uiCheckBox1.MinimumSize = new System.Drawing.Size(1, 1); this.uiCheckBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox1.Name = "uiCheckBox1"; this.uiCheckBox1.Name = "uiCheckBox1";
@ -67,13 +69,14 @@ namespace Sunny.UI.Demo
// //
this.uiListBox1.FillColor = System.Drawing.Color.White; this.uiListBox1.FillColor = System.Drawing.Color.White;
this.uiListBox1.Font = new System.Drawing.Font("宋体", 12F); this.uiListBox1.Font = new System.Drawing.Font("宋体", 12F);
this.uiListBox1.FormatString = ""; this.uiListBox1.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.uiListBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); this.uiListBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiListBox1.Location = new System.Drawing.Point(30, 85); this.uiListBox1.Location = new System.Drawing.Point(30, 85);
this.uiListBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiListBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiListBox1.MinimumSize = new System.Drawing.Size(1, 1); this.uiListBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiListBox1.Name = "uiListBox1"; this.uiListBox1.Name = "uiListBox1";
this.uiListBox1.Padding = new System.Windows.Forms.Padding(2); this.uiListBox1.Padding = new System.Windows.Forms.Padding(2);
this.uiListBox1.ShowText = false;
this.uiListBox1.Size = new System.Drawing.Size(270, 343); this.uiListBox1.Size = new System.Drawing.Size(270, 343);
this.uiListBox1.TabIndex = 27; this.uiListBox1.TabIndex = 27;
this.uiListBox1.Text = "uiListBox1"; this.uiListBox1.Text = "uiListBox1";
@ -82,18 +85,22 @@ namespace Sunny.UI.Demo
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.Location = new System.Drawing.Point(352, 55); this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(352, 51);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(266, 18); this.uiLine2.Size = new System.Drawing.Size(266, 27);
this.uiLine2.TabIndex = 26; this.uiLine2.TabIndex = 26;
this.uiLine2.Text = "uiImageListBox"; this.uiLine2.Text = "uiImageListBox";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(30, 55); this.uiLine1.Location = new System.Drawing.Point(30, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -106,6 +113,7 @@ namespace Sunny.UI.Demo
// //
this.uiImageListBox1.FillColor = System.Drawing.Color.White; this.uiImageListBox1.FillColor = System.Drawing.Color.White;
this.uiImageListBox1.Font = new System.Drawing.Font("宋体", 12F); this.uiImageListBox1.Font = new System.Drawing.Font("宋体", 12F);
this.uiImageListBox1.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.uiImageListBox1.ItemHeight = 80; this.uiImageListBox1.ItemHeight = 80;
this.uiImageListBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); this.uiImageListBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiImageListBox1.Location = new System.Drawing.Point(352, 85); this.uiImageListBox1.Location = new System.Drawing.Point(352, 85);
@ -113,6 +121,7 @@ namespace Sunny.UI.Demo
this.uiImageListBox1.MinimumSize = new System.Drawing.Size(1, 1); this.uiImageListBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiImageListBox1.Name = "uiImageListBox1"; this.uiImageListBox1.Name = "uiImageListBox1";
this.uiImageListBox1.Padding = new System.Windows.Forms.Padding(2); this.uiImageListBox1.Padding = new System.Windows.Forms.Padding(2);
this.uiImageListBox1.ShowText = false;
this.uiImageListBox1.Size = new System.Drawing.Size(266, 343); this.uiImageListBox1.Size = new System.Drawing.Size(266, 343);
this.uiImageListBox1.TabIndex = 24; this.uiImageListBox1.TabIndex = 24;
this.uiImageListBox1.Text = "uiImageListBox1"; this.uiImageListBox1.Text = "uiImageListBox1";

View File

@ -123,7 +123,9 @@ namespace Sunny.UI.Demo
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(30, 160); this.uiLine2.Location = new System.Drawing.Point(30, 160);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
@ -137,7 +139,6 @@ namespace Sunny.UI.Demo
this.uiNavMenu2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); this.uiNavMenu2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu2.BorderStyle = System.Windows.Forms.BorderStyle.None; this.uiNavMenu2.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.uiNavMenu2.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll; this.uiNavMenu2.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
this.uiNavMenu2.ExpandSelectFirst = true;
this.uiNavMenu2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); this.uiNavMenu2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu2.Font = new System.Drawing.Font("宋体", 12F); this.uiNavMenu2.Font = new System.Drawing.Font("宋体", 12F);
this.uiNavMenu2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); this.uiNavMenu2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
@ -204,18 +205,22 @@ namespace Sunny.UI.Demo
treeNode19, treeNode19,
treeNode20, treeNode20,
treeNode21}); treeNode21});
this.uiNavMenu2.ScrollBarColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiNavMenu2.ScrollBarHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiNavMenu2.ScrollBarPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiNavMenu2.ScrollFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu2.SecondBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235))))); this.uiNavMenu2.SecondBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
this.uiNavMenu2.SelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250))))); this.uiNavMenu2.SelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
this.uiNavMenu2.SelectedColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
this.uiNavMenu2.ShowLines = false; this.uiNavMenu2.ShowLines = false;
this.uiNavMenu2.Size = new System.Drawing.Size(253, 353); this.uiNavMenu2.Size = new System.Drawing.Size(253, 353);
this.uiNavMenu2.Style = Sunny.UI.UIStyle.Custom;
this.uiNavMenu2.TabIndex = 22; this.uiNavMenu2.TabIndex = 22;
this.uiNavMenu2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
// uiNavMenu1 // uiNavMenu1
// //
this.uiNavMenu1.BorderStyle = System.Windows.Forms.BorderStyle.None; this.uiNavMenu1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.uiNavMenu1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll; this.uiNavMenu1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
this.uiNavMenu1.ExpandSelectFirst = true;
this.uiNavMenu1.Font = new System.Drawing.Font("宋体", 12F); this.uiNavMenu1.Font = new System.Drawing.Font("宋体", 12F);
this.uiNavMenu1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); this.uiNavMenu1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu1.FullRowSelect = true; this.uiNavMenu1.FullRowSelect = true;
@ -283,12 +288,14 @@ namespace Sunny.UI.Demo
this.uiNavMenu1.ShowLines = false; this.uiNavMenu1.ShowLines = false;
this.uiNavMenu1.Size = new System.Drawing.Size(253, 353); this.uiNavMenu1.Size = new System.Drawing.Size(253, 353);
this.uiNavMenu1.TabIndex = 21; this.uiNavMenu1.TabIndex = 21;
this.uiNavMenu1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiNavMenu1.MenuItemClick += new Sunny.UI.UINavMenu.OnMenuItemClick(this.uiNavMenu1_MenuItemClick); this.uiNavMenu1.MenuItemClick += new Sunny.UI.UINavMenu.OnMenuItemClick(this.uiNavMenu1_MenuItemClick);
// //
// uiNavBar1 // uiNavBar1
// //
this.uiNavBar1.Controls.Add(this.uiLine1); this.uiNavBar1.Controls.Add(this.uiLine1);
this.uiNavBar1.Dock = System.Windows.Forms.DockStyle.Top; this.uiNavBar1.Dock = System.Windows.Forms.DockStyle.Top;
this.uiNavBar1.DropMenuFont = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiNavBar1.Font = new System.Drawing.Font("宋体", 12F); this.uiNavBar1.Font = new System.Drawing.Font("宋体", 12F);
this.uiNavBar1.Location = new System.Drawing.Point(0, 35); this.uiNavBar1.Location = new System.Drawing.Point(0, 35);
this.uiNavBar1.Name = "uiNavBar1"; this.uiNavBar1.Name = "uiNavBar1";
@ -337,6 +344,7 @@ namespace Sunny.UI.Demo
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.uiLine1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56)))));
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.White; this.uiLine1.ForeColor = System.Drawing.Color.White;

View File

@ -12,7 +12,7 @@
private void uiCalendar1_OnDateTimeChanged(object sender, UIDateTimeArgs e) private void uiCalendar1_OnDateTimeChanged(object sender, UIDateTimeArgs e)
{ {
ShowInfoTip(uiCalendar1.Date.DateString()); this.ShowInfoTip(uiCalendar1.Date.DateString());
} }
} }
} }

View File

@ -18,8 +18,8 @@
private void timer1_Tick(object sender, System.EventArgs e) private void timer1_Tick(object sender, System.EventArgs e)
{ {
value++; value++;
uiTrackBar2.Value = uiTrackBar1.Value = value; uiTrackBar8.Value = uiTrackBar2.Value = uiTrackBar1.Value = value;
uiProcessBar2.Value = uiProcessBar1.Value = value; uiProcessBar4.Value = uiProcessBar2.Value = uiProcessBar1.Value = value;
uiRoundProcess4.Value = uiRoundProcess3.Value = uiProcessBar3.Value = uiRoundProcess2.Value = uiRoundProcess1.Value = value; uiRoundProcess4.Value = uiRoundProcess3.Value = uiProcessBar3.Value = uiRoundProcess2.Value = uiRoundProcess1.Value = value;
} }
@ -30,7 +30,7 @@
private void uiTrackBar4_ValueChanged(object sender, System.EventArgs e) private void uiTrackBar4_ValueChanged(object sender, System.EventArgs e)
{ {
uiTrackBar5.Value = uiTrackBar4.Value; uiTrackBar7.Value = uiTrackBar5.Value = uiTrackBar4.Value;
} }
} }
} }

View File

@ -30,13 +30,6 @@ namespace Sunny.UI.Demo
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
this.uiTrackBar8 = new Sunny.UI.UITrackBar();
this.uiTrackBar7 = new Sunny.UI.UITrackBar();
this.uiTrackBar6 = new Sunny.UI.UITrackBar();
this.uiTrackBar5 = new Sunny.UI.UITrackBar();
this.uiTrackBar4 = new Sunny.UI.UITrackBar();
this.uiTrackBar3 = new Sunny.UI.UITrackBar();
this.uiTrackBar2 = new Sunny.UI.UITrackBar();
this.uiLine2 = new Sunny.UI.UILine(); this.uiLine2 = new Sunny.UI.UILine();
this.uiBreadcrumb1 = new Sunny.UI.UIBreadcrumb(); this.uiBreadcrumb1 = new Sunny.UI.UIBreadcrumb();
this.uiRoundProcess2 = new Sunny.UI.UIRoundProcess(); this.uiRoundProcess2 = new Sunny.UI.UIRoundProcess();
@ -46,7 +39,6 @@ namespace Sunny.UI.Demo
this.uiLine1 = new Sunny.UI.UILine(); this.uiLine1 = new Sunny.UI.UILine();
this.uiWaitingBar1 = new Sunny.UI.UIWaitingBar(); this.uiWaitingBar1 = new Sunny.UI.UIWaitingBar();
this.uiLine5 = new Sunny.UI.UILine(); this.uiLine5 = new Sunny.UI.UILine();
this.uiTrackBar1 = new Sunny.UI.UITrackBar();
this.uiLine4 = new Sunny.UI.UILine(); this.uiLine4 = new Sunny.UI.UILine();
this.uiProgressIndicator1 = new Sunny.UI.UIProgressIndicator(); this.uiProgressIndicator1 = new Sunny.UI.UIProgressIndicator();
this.uiLine3 = new Sunny.UI.UILine(); this.uiLine3 = new Sunny.UI.UILine();
@ -56,93 +48,27 @@ namespace Sunny.UI.Demo
this.uiLine6 = new Sunny.UI.UILine(); this.uiLine6 = new Sunny.UI.UILine();
this.uiRoundProcess3 = new Sunny.UI.UIRoundProcess(); this.uiRoundProcess3 = new Sunny.UI.UIRoundProcess();
this.uiRoundProcess4 = new Sunny.UI.UIRoundProcess(); this.uiRoundProcess4 = new Sunny.UI.UIRoundProcess();
this.uiRuler5 = new Sunny.UI.UIRuler();
this.uiRuler6 = new Sunny.UI.UIRuler();
this.uiRuler4 = new Sunny.UI.UIRuler();
this.uiRuler3 = new Sunny.UI.UIRuler();
this.uiRuler2 = new Sunny.UI.UIRuler();
this.uiRuler1 = new Sunny.UI.UIRuler();
this.uiTrackBar8 = new Sunny.UI.UITrackBar();
this.uiTrackBar7 = new Sunny.UI.UITrackBar();
this.uiTrackBar5 = new Sunny.UI.UITrackBar();
this.uiTrackBar4 = new Sunny.UI.UITrackBar();
this.uiTrackBar3 = new Sunny.UI.UITrackBar();
this.uiTrackBar2 = new Sunny.UI.UITrackBar();
this.uiTrackBar1 = new Sunny.UI.UITrackBar();
this.uiProcessBar4 = new Sunny.UI.UIProcessBar();
this.SuspendLayout(); this.SuspendLayout();
// //
// uiTrackBar8
//
this.uiTrackBar8.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiTrackBar8.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar8.Location = new System.Drawing.Point(428, 395);
this.uiTrackBar8.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar8.Name = "uiTrackBar8";
this.uiTrackBar8.Size = new System.Drawing.Size(35, 99);
this.uiTrackBar8.TabIndex = 102;
this.uiTrackBar8.Text = "uiTrackBar8";
this.uiTrackBar8.Value = 50;
//
// uiTrackBar7
//
this.uiTrackBar7.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiTrackBar7.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar7.Location = new System.Drawing.Point(387, 395);
this.uiTrackBar7.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar7.Name = "uiTrackBar7";
this.uiTrackBar7.Size = new System.Drawing.Size(35, 99);
this.uiTrackBar7.TabIndex = 101;
this.uiTrackBar7.Text = "uiTrackBar7";
this.uiTrackBar7.Value = 50;
//
// uiTrackBar6
//
this.uiTrackBar6.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiTrackBar6.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar6.Location = new System.Drawing.Point(346, 395);
this.uiTrackBar6.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar6.Name = "uiTrackBar6";
this.uiTrackBar6.Size = new System.Drawing.Size(35, 99);
this.uiTrackBar6.TabIndex = 100;
this.uiTrackBar6.Text = "uiTrackBar6";
this.uiTrackBar6.Value = 50;
//
// uiTrackBar5
//
this.uiTrackBar5.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiTrackBar5.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar5.Location = new System.Drawing.Point(305, 395);
this.uiTrackBar5.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar5.Name = "uiTrackBar5";
this.uiTrackBar5.Size = new System.Drawing.Size(35, 99);
this.uiTrackBar5.TabIndex = 99;
this.uiTrackBar5.Text = "uiTrackBar5";
this.uiTrackBar5.Value = 50;
//
// uiTrackBar4
//
this.uiTrackBar4.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar4.Location = new System.Drawing.Point(28, 465);
this.uiTrackBar4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar4.Name = "uiTrackBar4";
this.uiTrackBar4.Size = new System.Drawing.Size(158, 29);
this.uiTrackBar4.TabIndex = 98;
this.uiTrackBar4.Text = "uiTrackBar4";
this.uiTrackBar4.ValueChanged += new System.EventHandler(this.uiTrackBar4_ValueChanged);
//
// uiTrackBar3
//
this.uiTrackBar3.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar3.Location = new System.Drawing.Point(28, 430);
this.uiTrackBar3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar3.Name = "uiTrackBar3";
this.uiTrackBar3.Size = new System.Drawing.Size(158, 29);
this.uiTrackBar3.TabIndex = 97;
this.uiTrackBar3.Text = "uiTrackBar3";
this.uiTrackBar3.ValueChanged += new System.EventHandler(this.uiTrackBar3_ValueChanged);
//
// uiTrackBar2
//
this.uiTrackBar2.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiTrackBar2.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar2.Location = new System.Drawing.Point(264, 395);
this.uiTrackBar2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar2.Name = "uiTrackBar2";
this.uiTrackBar2.Size = new System.Drawing.Size(35, 99);
this.uiTrackBar2.TabIndex = 96;
this.uiTrackBar2.Text = "uiTrackBar2";
this.uiTrackBar2.Value = 50;
//
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(29, 287); this.uiLine2.Location = new System.Drawing.Point(29, 287);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
@ -168,12 +94,14 @@ namespace Sunny.UI.Demo
this.uiBreadcrumb1.Size = new System.Drawing.Size(440, 25); this.uiBreadcrumb1.Size = new System.Drawing.Size(440, 25);
this.uiBreadcrumb1.TabIndex = 94; this.uiBreadcrumb1.TabIndex = 94;
this.uiBreadcrumb1.Text = "uiBreadcrumb1"; this.uiBreadcrumb1.Text = "uiBreadcrumb1";
this.uiBreadcrumb1.UnSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
// //
// uiRoundProcess2 // uiRoundProcess2
// //
this.uiRoundProcess2.BackColor = System.Drawing.Color.Transparent; this.uiRoundProcess2.BackColor = System.Drawing.Color.Transparent;
this.uiRoundProcess2.DecimalPlaces = 0; this.uiRoundProcess2.DecimalPlaces = 0;
this.uiRoundProcess2.Font = new System.Drawing.Font("宋体", 12F); this.uiRoundProcess2.Font = new System.Drawing.Font("宋体", 12F);
this.uiRoundProcess2.ForeColor2 = System.Drawing.Color.Black;
this.uiRoundProcess2.Inner = 0; this.uiRoundProcess2.Inner = 0;
this.uiRoundProcess2.Location = new System.Drawing.Point(133, 167); this.uiRoundProcess2.Location = new System.Drawing.Point(133, 167);
this.uiRoundProcess2.MinimumSize = new System.Drawing.Size(1, 1); this.uiRoundProcess2.MinimumSize = new System.Drawing.Size(1, 1);
@ -185,7 +113,9 @@ namespace Sunny.UI.Demo
// //
// uiLine9 // uiLine9
// //
this.uiLine9.BackColor = System.Drawing.Color.Transparent;
this.uiLine9.Font = new System.Drawing.Font("宋体", 12F); this.uiLine9.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine9.Location = new System.Drawing.Point(29, 147); this.uiLine9.Location = new System.Drawing.Point(29, 147);
this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine9.Name = "uiLine9"; this.uiLine9.Name = "uiLine9";
@ -198,6 +128,7 @@ namespace Sunny.UI.Demo
// //
this.uiRoundProcess1.BackColor = System.Drawing.Color.Transparent; this.uiRoundProcess1.BackColor = System.Drawing.Color.Transparent;
this.uiRoundProcess1.Font = new System.Drawing.Font("宋体", 12F); this.uiRoundProcess1.Font = new System.Drawing.Font("宋体", 12F);
this.uiRoundProcess1.ForeColor2 = System.Drawing.Color.Black;
this.uiRoundProcess1.Inner = 35; this.uiRoundProcess1.Inner = 35;
this.uiRoundProcess1.Location = new System.Drawing.Point(15, 167); this.uiRoundProcess1.Location = new System.Drawing.Point(15, 167);
this.uiRoundProcess1.MinimumSize = new System.Drawing.Size(1, 1); this.uiRoundProcess1.MinimumSize = new System.Drawing.Size(1, 1);
@ -209,6 +140,7 @@ namespace Sunny.UI.Demo
// //
// uiProcessBar2 // uiProcessBar2
// //
this.uiProcessBar2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiProcessBar2.Font = new System.Drawing.Font("宋体", 12F); this.uiProcessBar2.Font = new System.Drawing.Font("宋体", 12F);
this.uiProcessBar2.Location = new System.Drawing.Point(30, 123); this.uiProcessBar2.Location = new System.Drawing.Point(30, 123);
this.uiProcessBar2.MinimumSize = new System.Drawing.Size(70, 1); this.uiProcessBar2.MinimumSize = new System.Drawing.Size(70, 1);
@ -221,7 +153,9 @@ namespace Sunny.UI.Demo
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(411, 54); this.uiLine1.Location = new System.Drawing.Point(411, 54);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -232,7 +166,9 @@ namespace Sunny.UI.Demo
// //
// uiWaitingBar1 // uiWaitingBar1
// //
this.uiWaitingBar1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(249)))), ((int)(((byte)(255)))));
this.uiWaitingBar1.Font = new System.Drawing.Font("宋体", 12F); this.uiWaitingBar1.Font = new System.Drawing.Font("宋体", 12F);
this.uiWaitingBar1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiWaitingBar1.Location = new System.Drawing.Point(411, 88); this.uiWaitingBar1.Location = new System.Drawing.Point(411, 88);
this.uiWaitingBar1.MinimumSize = new System.Drawing.Size(70, 23); this.uiWaitingBar1.MinimumSize = new System.Drawing.Size(70, 23);
this.uiWaitingBar1.Name = "uiWaitingBar1"; this.uiWaitingBar1.Name = "uiWaitingBar1";
@ -242,7 +178,9 @@ namespace Sunny.UI.Demo
// //
// uiLine5 // uiLine5
// //
this.uiLine5.BackColor = System.Drawing.Color.Transparent;
this.uiLine5.Font = new System.Drawing.Font("宋体", 12F); this.uiLine5.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine5.Location = new System.Drawing.Point(28, 369); this.uiLine5.Location = new System.Drawing.Point(28, 369);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5"; this.uiLine5.Name = "uiLine5";
@ -251,19 +189,11 @@ namespace Sunny.UI.Demo
this.uiLine5.Text = "UITrackBar"; this.uiLine5.Text = "UITrackBar";
this.uiLine5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// uiTrackBar1
//
this.uiTrackBar1.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar1.Location = new System.Drawing.Point(28, 395);
this.uiTrackBar1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar1.Name = "uiTrackBar1";
this.uiTrackBar1.Size = new System.Drawing.Size(158, 29);
this.uiTrackBar1.TabIndex = 86;
this.uiTrackBar1.Text = "uiTrackBar1";
//
// uiLine4 // uiLine4
// //
this.uiLine4.BackColor = System.Drawing.Color.Transparent;
this.uiLine4.Font = new System.Drawing.Font("宋体", 12F); this.uiLine4.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine4.Location = new System.Drawing.Point(527, 147); this.uiLine4.Location = new System.Drawing.Point(527, 147);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4"; this.uiLine4.Name = "uiLine4";
@ -284,7 +214,9 @@ namespace Sunny.UI.Demo
// //
// uiLine3 // uiLine3
// //
this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F); this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(30, 54); this.uiLine3.Location = new System.Drawing.Point(30, 54);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3"; this.uiLine3.Name = "uiLine3";
@ -295,6 +227,7 @@ namespace Sunny.UI.Demo
// //
// uiProcessBar1 // uiProcessBar1
// //
this.uiProcessBar1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiProcessBar1.Font = new System.Drawing.Font("宋体", 12F); this.uiProcessBar1.Font = new System.Drawing.Font("宋体", 12F);
this.uiProcessBar1.Location = new System.Drawing.Point(30, 88); this.uiProcessBar1.Location = new System.Drawing.Point(30, 88);
this.uiProcessBar1.MinimumSize = new System.Drawing.Size(70, 1); this.uiProcessBar1.MinimumSize = new System.Drawing.Size(70, 1);
@ -310,17 +243,20 @@ namespace Sunny.UI.Demo
// uiProcessBar3 // uiProcessBar3
// //
this.uiProcessBar3.Direction = Sunny.UI.UILine.LineDirection.Vertical; this.uiProcessBar3.Direction = Sunny.UI.UILine.LineDirection.Vertical;
this.uiProcessBar3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiProcessBar3.Font = new System.Drawing.Font("宋体", 12F); this.uiProcessBar3.Font = new System.Drawing.Font("宋体", 12F);
this.uiProcessBar3.Location = new System.Drawing.Point(527, 325); this.uiProcessBar3.Location = new System.Drawing.Point(527, 325);
this.uiProcessBar3.MinimumSize = new System.Drawing.Size(70, 1); this.uiProcessBar3.MinimumSize = new System.Drawing.Size(70, 1);
this.uiProcessBar3.Name = "uiProcessBar3"; this.uiProcessBar3.Name = "uiProcessBar3";
this.uiProcessBar3.Size = new System.Drawing.Size(173, 169); this.uiProcessBar3.Size = new System.Drawing.Size(173, 219);
this.uiProcessBar3.TabIndex = 103; this.uiProcessBar3.TabIndex = 103;
this.uiProcessBar3.Value = 50; this.uiProcessBar3.Value = 50;
// //
// uiLine6 // uiLine6
// //
this.uiLine6.BackColor = System.Drawing.Color.Transparent;
this.uiLine6.Font = new System.Drawing.Font("宋体", 12F); this.uiLine6.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine6.Location = new System.Drawing.Point(527, 287); this.uiLine6.Location = new System.Drawing.Point(527, 287);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6"; this.uiLine6.Name = "uiLine6";
@ -364,22 +300,202 @@ namespace Sunny.UI.Demo
this.uiRoundProcess4.TabIndex = 106; this.uiRoundProcess4.TabIndex = 106;
this.uiRoundProcess4.Text = "0%"; this.uiRoundProcess4.Text = "0%";
// //
// uiRuler5
//
this.uiRuler5.BackColor = System.Drawing.Color.Transparent;
this.uiRuler5.Direction = Sunny.UI.UITrackBar.BarDirection.VerticalDown;
this.uiRuler5.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiRuler5.Location = new System.Drawing.Point(439, 387);
this.uiRuler5.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRuler5.MinorCount = 4;
this.uiRuler5.Name = "uiRuler5";
this.uiRuler5.Size = new System.Drawing.Size(35, 166);
this.uiRuler5.StartValue = -20D;
this.uiRuler5.StepCount = 6;
this.uiRuler5.TabIndex = 125;
this.uiRuler5.Text = "uiRuler5";
this.uiRuler5.TextDirection = Sunny.UI.UIRuler.UITextPos.Behind;
//
// uiRuler6
//
this.uiRuler6.BackColor = System.Drawing.Color.Transparent;
this.uiRuler6.Direction = Sunny.UI.UITrackBar.BarDirection.VerticalDown;
this.uiRuler6.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiRuler6.Location = new System.Drawing.Point(342, 387);
this.uiRuler6.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRuler6.MinorCount = 4;
this.uiRuler6.Name = "uiRuler6";
this.uiRuler6.Size = new System.Drawing.Size(35, 166);
this.uiRuler6.TabIndex = 124;
this.uiRuler6.Text = "uiRuler6";
//
// uiRuler4
//
this.uiRuler4.BackColor = System.Drawing.Color.Transparent;
this.uiRuler4.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiRuler4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiRuler4.Location = new System.Drawing.Point(308, 387);
this.uiRuler4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRuler4.MinorCount = 4;
this.uiRuler4.Name = "uiRuler4";
this.uiRuler4.Size = new System.Drawing.Size(35, 166);
this.uiRuler4.TabIndex = 123;
this.uiRuler4.Text = "uiRuler4";
this.uiRuler4.TextDirection = Sunny.UI.UIRuler.UITextPos.Behind;
//
// uiRuler3
//
this.uiRuler3.BackColor = System.Drawing.Color.Transparent;
this.uiRuler3.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiRuler3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiRuler3.Location = new System.Drawing.Point(211, 387);
this.uiRuler3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRuler3.MinorCount = 4;
this.uiRuler3.Name = "uiRuler3";
this.uiRuler3.Size = new System.Drawing.Size(35, 166);
this.uiRuler3.TabIndex = 122;
this.uiRuler3.Text = "uiRuler3";
//
// uiRuler2
//
this.uiRuler2.BackColor = System.Drawing.Color.Transparent;
this.uiRuler2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiRuler2.Location = new System.Drawing.Point(28, 395);
this.uiRuler2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRuler2.MinorCount = 4;
this.uiRuler2.Name = "uiRuler2";
this.uiRuler2.Size = new System.Drawing.Size(173, 27);
this.uiRuler2.TabIndex = 121;
this.uiRuler2.Text = "uiRuler2";
//
// uiRuler1
//
this.uiRuler1.BackColor = System.Drawing.Color.Transparent;
this.uiRuler1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiRuler1.Location = new System.Drawing.Point(28, 517);
this.uiRuler1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRuler1.MinorCount = 4;
this.uiRuler1.Name = "uiRuler1";
this.uiRuler1.Size = new System.Drawing.Size(173, 27);
this.uiRuler1.TabIndex = 120;
this.uiRuler1.Text = "uiRuler1";
this.uiRuler1.TextDirection = Sunny.UI.UIRuler.UITextPos.Behind;
//
// uiTrackBar8
//
this.uiTrackBar8.Direction = Sunny.UI.UITrackBar.BarDirection.VerticalDown;
this.uiTrackBar8.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar8.Location = new System.Drawing.Point(373, 395);
this.uiTrackBar8.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar8.Name = "uiTrackBar8";
this.uiTrackBar8.Size = new System.Drawing.Size(35, 149);
this.uiTrackBar8.TabIndex = 119;
this.uiTrackBar8.Text = "uiTrackBar8";
this.uiTrackBar8.Value = 50;
//
// uiTrackBar7
//
this.uiTrackBar7.Direction = Sunny.UI.UITrackBar.BarDirection.VerticalDown;
this.uiTrackBar7.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar7.Location = new System.Drawing.Point(408, 395);
this.uiTrackBar7.Minimum = -20;
this.uiTrackBar7.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar7.Name = "uiTrackBar7";
this.uiTrackBar7.Size = new System.Drawing.Size(35, 149);
this.uiTrackBar7.TabIndex = 118;
this.uiTrackBar7.Text = "uiTrackBar7";
//
// uiTrackBar5
//
this.uiTrackBar5.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiTrackBar5.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar5.Location = new System.Drawing.Point(278, 395);
this.uiTrackBar5.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar5.Name = "uiTrackBar5";
this.uiTrackBar5.Size = new System.Drawing.Size(35, 149);
this.uiTrackBar5.TabIndex = 117;
this.uiTrackBar5.Text = "uiTrackBar5";
//
// uiTrackBar4
//
this.uiTrackBar4.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar4.Location = new System.Drawing.Point(36, 490);
this.uiTrackBar4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar4.Name = "uiTrackBar4";
this.uiTrackBar4.Size = new System.Drawing.Size(158, 29);
this.uiTrackBar4.TabIndex = 116;
this.uiTrackBar4.Text = "uiTrackBar4";
this.uiTrackBar4.ValueChanged += new System.EventHandler(this.uiTrackBar4_ValueChanged);
//
// uiTrackBar3
//
this.uiTrackBar3.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar3.Location = new System.Drawing.Point(36, 455);
this.uiTrackBar3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar3.Name = "uiTrackBar3";
this.uiTrackBar3.Size = new System.Drawing.Size(158, 29);
this.uiTrackBar3.TabIndex = 115;
this.uiTrackBar3.Text = "uiTrackBar3";
this.uiTrackBar3.ValueChanged += new System.EventHandler(this.uiTrackBar3_ValueChanged);
//
// uiTrackBar2
//
this.uiTrackBar2.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiTrackBar2.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar2.Location = new System.Drawing.Point(243, 395);
this.uiTrackBar2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar2.Name = "uiTrackBar2";
this.uiTrackBar2.Size = new System.Drawing.Size(35, 149);
this.uiTrackBar2.TabIndex = 114;
this.uiTrackBar2.Text = "uiTrackBar2";
this.uiTrackBar2.Value = 50;
//
// uiTrackBar1
//
this.uiTrackBar1.Font = new System.Drawing.Font("宋体", 12F);
this.uiTrackBar1.Location = new System.Drawing.Point(36, 420);
this.uiTrackBar1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTrackBar1.Name = "uiTrackBar1";
this.uiTrackBar1.Size = new System.Drawing.Size(158, 29);
this.uiTrackBar1.TabIndex = 113;
this.uiTrackBar1.Text = "uiTrackBar1";
//
// uiProcessBar4
//
this.uiProcessBar4.Direction = Sunny.UI.UILine.LineDirection.Vertical;
this.uiProcessBar4.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiProcessBar4.Font = new System.Drawing.Font("宋体", 12F);
this.uiProcessBar4.Location = new System.Drawing.Point(706, 325);
this.uiProcessBar4.MinimumSize = new System.Drawing.Size(3, 1);
this.uiProcessBar4.Name = "uiProcessBar4";
this.uiProcessBar4.Radius = 3;
this.uiProcessBar4.Size = new System.Drawing.Size(3, 219);
this.uiProcessBar4.TabIndex = 126;
this.uiProcessBar4.Value = 50;
//
// FProcess // FProcess
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 546); this.ClientSize = new System.Drawing.Size(800, 635);
this.Controls.Add(this.uiRoundProcess4); this.Controls.Add(this.uiProcessBar4);
this.Controls.Add(this.uiRoundProcess3); this.Controls.Add(this.uiRuler5);
this.Controls.Add(this.uiLine6); this.Controls.Add(this.uiRuler6);
this.Controls.Add(this.uiProcessBar3); this.Controls.Add(this.uiRuler4);
this.Controls.Add(this.uiRuler3);
this.Controls.Add(this.uiRuler2);
this.Controls.Add(this.uiRuler1);
this.Controls.Add(this.uiTrackBar8); this.Controls.Add(this.uiTrackBar8);
this.Controls.Add(this.uiTrackBar7); this.Controls.Add(this.uiTrackBar7);
this.Controls.Add(this.uiTrackBar6);
this.Controls.Add(this.uiTrackBar5); this.Controls.Add(this.uiTrackBar5);
this.Controls.Add(this.uiTrackBar4); this.Controls.Add(this.uiTrackBar4);
this.Controls.Add(this.uiTrackBar3); this.Controls.Add(this.uiTrackBar3);
this.Controls.Add(this.uiTrackBar2); this.Controls.Add(this.uiTrackBar2);
this.Controls.Add(this.uiTrackBar1);
this.Controls.Add(this.uiRoundProcess4);
this.Controls.Add(this.uiRoundProcess3);
this.Controls.Add(this.uiLine6);
this.Controls.Add(this.uiProcessBar3);
this.Controls.Add(this.uiLine2); this.Controls.Add(this.uiLine2);
this.Controls.Add(this.uiBreadcrumb1); this.Controls.Add(this.uiBreadcrumb1);
this.Controls.Add(this.uiRoundProcess2); this.Controls.Add(this.uiRoundProcess2);
@ -389,7 +505,6 @@ namespace Sunny.UI.Demo
this.Controls.Add(this.uiLine1); this.Controls.Add(this.uiLine1);
this.Controls.Add(this.uiWaitingBar1); this.Controls.Add(this.uiWaitingBar1);
this.Controls.Add(this.uiLine5); this.Controls.Add(this.uiLine5);
this.Controls.Add(this.uiTrackBar1);
this.Controls.Add(this.uiLine4); this.Controls.Add(this.uiLine4);
this.Controls.Add(this.uiProgressIndicator1); this.Controls.Add(this.uiProgressIndicator1);
this.Controls.Add(this.uiLine3); this.Controls.Add(this.uiLine3);
@ -404,14 +519,6 @@ namespace Sunny.UI.Demo
} }
#endregion #endregion
private UITrackBar uiTrackBar8;
private UITrackBar uiTrackBar7;
private UITrackBar uiTrackBar6;
private UITrackBar uiTrackBar5;
private UITrackBar uiTrackBar4;
private UITrackBar uiTrackBar3;
private UITrackBar uiTrackBar2;
private UILine uiLine2; private UILine uiLine2;
private UIBreadcrumb uiBreadcrumb1; private UIBreadcrumb uiBreadcrumb1;
private UIRoundProcess uiRoundProcess2; private UIRoundProcess uiRoundProcess2;
@ -421,7 +528,6 @@ namespace Sunny.UI.Demo
private UILine uiLine1; private UILine uiLine1;
private UIWaitingBar uiWaitingBar1; private UIWaitingBar uiWaitingBar1;
private UILine uiLine5; private UILine uiLine5;
private UITrackBar uiTrackBar1;
private UILine uiLine4; private UILine uiLine4;
private UIProgressIndicator uiProgressIndicator1; private UIProgressIndicator uiProgressIndicator1;
private UILine uiLine3; private UILine uiLine3;
@ -431,5 +537,19 @@ namespace Sunny.UI.Demo
private UILine uiLine6; private UILine uiLine6;
private UIRoundProcess uiRoundProcess3; private UIRoundProcess uiRoundProcess3;
private UIRoundProcess uiRoundProcess4; private UIRoundProcess uiRoundProcess4;
private UIRuler uiRuler5;
private UIRuler uiRuler6;
private UIRuler uiRuler4;
private UIRuler uiRuler3;
private UIRuler uiRuler2;
private UIRuler uiRuler1;
private UITrackBar uiTrackBar8;
private UITrackBar uiTrackBar7;
private UITrackBar uiTrackBar5;
private UITrackBar uiTrackBar4;
private UITrackBar uiTrackBar3;
private UITrackBar uiTrackBar2;
private UITrackBar uiTrackBar1;
private UIProcessBar uiProcessBar4;
} }
} }

View File

@ -62,6 +62,7 @@ namespace Sunny.UI.Demo
this.uiButton4.Size = new System.Drawing.Size(100, 35); this.uiButton4.Size = new System.Drawing.Size(100, 35);
this.uiButton4.TabIndex = 86; this.uiButton4.TabIndex = 86;
this.uiButton4.Text = "选择"; this.uiButton4.Text = "选择";
this.uiButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click); this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click);
// //
// uiButton2 // uiButton2
@ -74,6 +75,7 @@ namespace Sunny.UI.Demo
this.uiButton2.Size = new System.Drawing.Size(100, 35); this.uiButton2.Size = new System.Drawing.Size(100, 35);
this.uiButton2.TabIndex = 85; this.uiButton2.TabIndex = 85;
this.uiButton2.Text = "全不选"; this.uiButton2.Text = "全不选";
this.uiButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton2.Click += new System.EventHandler(this.uiButton2_Click); this.uiButton2.Click += new System.EventHandler(this.uiButton2_Click);
// //
// uiRadioButtonGroup1 // uiRadioButtonGroup1
@ -99,7 +101,7 @@ namespace Sunny.UI.Demo
this.uiRadioButtonGroup1.Size = new System.Drawing.Size(670, 173); this.uiRadioButtonGroup1.Size = new System.Drawing.Size(670, 173);
this.uiRadioButtonGroup1.TabIndex = 84; this.uiRadioButtonGroup1.TabIndex = 84;
this.uiRadioButtonGroup1.Text = "UIRadioButtonGroup"; this.uiRadioButtonGroup1.Text = "UIRadioButtonGroup";
this.uiRadioButtonGroup1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; this.uiRadioButtonGroup1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiRadioButtonGroup1.ValueChanged += new Sunny.UI.UIRadioButtonGroup.OnValueChanged(this.uiRadioButtonGroup1_ValueChanged); this.uiRadioButtonGroup1.ValueChanged += new Sunny.UI.UIRadioButtonGroup.OnValueChanged(this.uiRadioButtonGroup1_ValueChanged);
// //
// uiRadioButton12 // uiRadioButton12
@ -135,9 +137,10 @@ namespace Sunny.UI.Demo
// //
this.uiLabel3.AutoSize = true; this.uiLabel3.AutoSize = true;
this.uiLabel3.Font = new System.Drawing.Font("宋体", 12F); this.uiLabel3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLabel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel3.Location = new System.Drawing.Point(49, 254); this.uiLabel3.Location = new System.Drawing.Point(49, 254);
this.uiLabel3.Name = "uiLabel3"; this.uiLabel3.Name = "uiLabel3";
this.uiLabel3.Size = new System.Drawing.Size(131, 21); this.uiLabel3.Size = new System.Drawing.Size(119, 16);
this.uiLabel3.TabIndex = 81; this.uiLabel3.TabIndex = 81;
this.uiLabel3.Text = "GroupIndex = 3"; this.uiLabel3.Text = "GroupIndex = 3";
this.uiLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@ -186,9 +189,10 @@ namespace Sunny.UI.Demo
// //
this.uiLabel2.AutoSize = true; this.uiLabel2.AutoSize = true;
this.uiLabel2.Font = new System.Drawing.Font("宋体", 12F); this.uiLabel2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel2.Location = new System.Drawing.Point(49, 213); this.uiLabel2.Location = new System.Drawing.Point(49, 213);
this.uiLabel2.Name = "uiLabel2"; this.uiLabel2.Name = "uiLabel2";
this.uiLabel2.Size = new System.Drawing.Size(131, 21); this.uiLabel2.Size = new System.Drawing.Size(119, 16);
this.uiLabel2.TabIndex = 77; this.uiLabel2.TabIndex = 77;
this.uiLabel2.Text = "GroupIndex = 2"; this.uiLabel2.Text = "GroupIndex = 2";
this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@ -237,9 +241,10 @@ namespace Sunny.UI.Demo
// //
this.uiLabel1.AutoSize = true; this.uiLabel1.AutoSize = true;
this.uiLabel1.Font = new System.Drawing.Font("宋体", 12F); this.uiLabel1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel1.Location = new System.Drawing.Point(49, 172); this.uiLabel1.Location = new System.Drawing.Point(49, 172);
this.uiLabel1.Name = "uiLabel1"; this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(131, 21); this.uiLabel1.Size = new System.Drawing.Size(119, 16);
this.uiLabel1.TabIndex = 73; this.uiLabel1.TabIndex = 73;
this.uiLabel1.Text = "GroupIndex = 1"; this.uiLabel1.Text = "GroupIndex = 1";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@ -286,7 +291,9 @@ namespace Sunny.UI.Demo
// //
// uiLine3 // uiLine3
// //
this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F); this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(30, 131); this.uiLine3.Location = new System.Drawing.Point(30, 131);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3"; this.uiLine3.Name = "uiLine3";
@ -323,7 +330,9 @@ namespace Sunny.UI.Demo
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(30, 55); this.uiLine2.Location = new System.Drawing.Point(30, 55);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
@ -332,7 +341,7 @@ namespace Sunny.UI.Demo
this.uiLine2.Text = "UIRadioButton"; this.uiLine2.Text = "UIRadioButton";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// FRadioButton1 // FRadioButton
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@ -358,7 +367,7 @@ namespace Sunny.UI.Demo
this.Controls.Add(this.uiRadioButton2); this.Controls.Add(this.uiRadioButton2);
this.Controls.Add(this.uiRadioButton1); this.Controls.Add(this.uiRadioButton1);
this.Controls.Add(this.uiLine2); this.Controls.Add(this.uiLine2);
this.Name = "FRadioButton1"; this.Name = "FRadioButton";
this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0); this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0);
this.ShowTitle = true; this.ShowTitle = true;
this.Symbol = 61842; this.Symbol = 61842;

View File

@ -23,7 +23,7 @@ namespace Sunny.UI.Demo
private void uiButton2_Click(object sender, EventArgs e) private void uiButton2_Click(object sender, EventArgs e)
{ {
uiRadioButtonGroup1.SelectedNone(); uiRadioButtonGroup1.SelectedIndex = -1;
} }
private void uiButton4_Click(object sender, EventArgs e) private void uiButton4_Click(object sender, EventArgs e)

View File

@ -73,7 +73,6 @@ namespace Sunny.UI.Demo
this.uiSplitContainer1.SplitterDistance = 266; this.uiSplitContainer1.SplitterDistance = 266;
this.uiSplitContainer1.SplitterWidth = 11; this.uiSplitContainer1.SplitterWidth = 11;
this.uiSplitContainer1.TabIndex = 0; this.uiSplitContainer1.TabIndex = 0;
this.uiSplitContainer1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiNavMenuEx1 // uiNavMenuEx1
// //
@ -107,10 +106,8 @@ namespace Sunny.UI.Demo
treeNode7}); treeNode7});
this.uiNavMenuEx1.ShowLines = false; this.uiNavMenuEx1.ShowLines = false;
this.uiNavMenuEx1.Size = new System.Drawing.Size(266, 415); this.uiNavMenuEx1.Size = new System.Drawing.Size(266, 415);
this.uiNavMenuEx1.Style = Sunny.UI.UIStyle.Custom;
this.uiNavMenuEx1.TabIndex = 0; this.uiNavMenuEx1.TabIndex = 0;
this.uiNavMenuEx1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiNavMenuEx1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiNavMenuEx1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
this.uiNavMenuEx1.NodeRightSymbolClick += new Sunny.UI.UINavMenu.OnNodeRightSymbolClick(this.uiNavMenuEx1_NodeRightSymbolClick); this.uiNavMenuEx1.NodeRightSymbolClick += new Sunny.UI.UINavMenu.OnNodeRightSymbolClick(this.uiNavMenuEx1_NodeRightSymbolClick);
// //
// uiSplitContainer2 // uiSplitContainer2
@ -134,7 +131,6 @@ namespace Sunny.UI.Demo
this.uiSplitContainer2.SplitterDistance = 244; this.uiSplitContainer2.SplitterDistance = 244;
this.uiSplitContainer2.SplitterWidth = 11; this.uiSplitContainer2.SplitterWidth = 11;
this.uiSplitContainer2.TabIndex = 0; this.uiSplitContainer2.TabIndex = 0;
this.uiSplitContainer2.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiListBox1 // uiListBox1
// //
@ -151,7 +147,6 @@ namespace Sunny.UI.Demo
this.uiListBox1.Size = new System.Drawing.Size(523, 244); this.uiListBox1.Size = new System.Drawing.Size(523, 244);
this.uiListBox1.TabIndex = 0; this.uiListBox1.TabIndex = 0;
this.uiListBox1.Text = "uiListBox1"; this.uiListBox1.Text = "uiListBox1";
this.uiListBox1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiButton1 // uiButton1
// //
@ -164,7 +159,6 @@ namespace Sunny.UI.Demo
this.uiButton1.TabIndex = 0; this.uiButton1.TabIndex = 0;
this.uiButton1.Text = "清除"; this.uiButton1.Text = "清除";
this.uiButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click); this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click);
// //
// FSplitContainer // FSplitContainer

View File

@ -17,7 +17,7 @@
private void uiTextBox1_ButtonClick(object sender, System.EventArgs e) private void uiTextBox1_ButtonClick(object sender, System.EventArgs e)
{ {
ShowInfoTip("您点击了编辑框的按钮。"); this.ShowInfoTip("您点击了编辑框的按钮。");
} }
} }
} }

View File

@ -67,7 +67,9 @@ namespace Sunny.UI.Demo
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(30, 55); this.uiLine1.Location = new System.Drawing.Point(30, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -75,7 +77,6 @@ namespace Sunny.UI.Demo
this.uiLine1.TabIndex = 21; this.uiLine1.TabIndex = 21;
this.uiLine1.Text = "UITreeView"; this.uiLine1.Text = "UITreeView";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.uiLine1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiTreeView1 // uiTreeView1
// //
@ -138,13 +139,12 @@ namespace Sunny.UI.Demo
treeNode15, treeNode15,
treeNode16, treeNode16,
treeNode20}); treeNode20});
this.uiTreeView1.ShowLines = true; this.uiTreeView1.ScrollBarStyleInherited = false;
this.uiTreeView1.ShowText = false; this.uiTreeView1.ShowText = false;
this.uiTreeView1.Size = new System.Drawing.Size(266, 313); this.uiTreeView1.Size = new System.Drawing.Size(266, 313);
this.uiTreeView1.TabIndex = 20; this.uiTreeView1.TabIndex = 20;
this.uiTreeView1.Text = null; this.uiTreeView1.Text = null;
this.uiTreeView1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; this.uiTreeView1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
this.uiTreeView1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// FTreeView // FTreeView
// //

View File

@ -29,9 +29,14 @@
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMain));
this.uiContextMenuStrip1 = new Sunny.UI.UIContextMenuStrip(); this.uiContextMenuStrip1 = new Sunny.UI.UIContextMenuStrip();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.NHome = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.NAbout = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.NZhCN = new System.Windows.Forms.ToolStripMenuItem();
this.NZhTW = new System.Windows.Forms.ToolStripMenuItem();
this.NEnUS = new System.Windows.Forms.ToolStripMenuItem();
this.StyleManager = new Sunny.UI.UIStyleManager(this.components); this.StyleManager = new Sunny.UI.UIStyleManager(this.components);
this.uiNavBar1 = new Sunny.UI.UINavBar(); this.uiNavBar1 = new Sunny.UI.UINavBar();
this.uiAvatar1 = new Sunny.UI.UIAvatar(); this.uiAvatar1 = new Sunny.UI.UIAvatar();
@ -51,32 +56,63 @@
// uiContextMenuStrip1 // uiContextMenuStrip1
// //
this.uiContextMenuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(249)))), ((int)(((byte)(255))))); this.uiContextMenuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(249)))), ((int)(((byte)(255)))));
this.uiContextMenuStrip1.Font = new System.Drawing.Font("宋体", 12F); this.uiContextMenuStrip1.Font = new System.Drawing.Font("Tahoma", 12F);
this.uiContextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.uiContextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem, this.NHome,
this.ToolStripMenuItem1}); this.NAbout,
this.toolStripMenuItem1,
this.NZhCN,
this.NZhTW,
this.NEnUS});
this.uiContextMenuStrip1.Name = "uiContextMenuStrip1"; this.uiContextMenuStrip1.Name = "uiContextMenuStrip1";
this.uiContextMenuStrip1.Size = new System.Drawing.Size(107, 48); this.uiContextMenuStrip1.Size = new System.Drawing.Size(143, 130);
// //
// 关于ToolStripMenuItem // NHome
// //
this.ToolStripMenuItem.Name = "关于ToolStripMenuItem"; this.NHome.Name = "NHome";
this.ToolStripMenuItem.Size = new System.Drawing.Size(106, 22); this.NHome.Size = new System.Drawing.Size(142, 24);
this.ToolStripMenuItem.Text = "主页"; this.NHome.Text = "主页";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click); this.NHome.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
// //
// 关于ToolStripMenuItem1 // NAbout
// //
this.ToolStripMenuItem1.Name = "关于ToolStripMenuItem1"; this.NAbout.Name = "NAbout";
this.ToolStripMenuItem1.Size = new System.Drawing.Size(106, 22); this.NAbout.Size = new System.Drawing.Size(142, 24);
this.ToolStripMenuItem1.Text = "关于"; this.NAbout.Text = "关于";
this.ToolStripMenuItem1.Click += new System.EventHandler(this.ToolStripMenuItem1_Click); this.NAbout.Click += new System.EventHandler(this.ToolStripMenuItem1_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(139, 6);
//
// NZhCN
//
this.NZhCN.Name = "NZhCN";
this.NZhCN.Size = new System.Drawing.Size(142, 24);
this.NZhCN.Text = "简体中文";
this.NZhCN.Click += new System.EventHandler(this.NZhCN_Click);
//
// NZhTW
//
this.NZhTW.Name = "NZhTW";
this.NZhTW.Size = new System.Drawing.Size(142, 24);
this.NZhTW.Text = "繁体中文";
this.NZhTW.Click += new System.EventHandler(this.NZhTW_Click);
//
// NEnUS
//
this.NEnUS.Name = "NEnUS";
this.NEnUS.Size = new System.Drawing.Size(142, 24);
this.NEnUS.Text = "English";
this.NEnUS.Click += new System.EventHandler(this.NEnUS_Click);
// //
// StyleManager // StyleManager
// //
this.StyleManager.DPIScale = true; this.StyleManager.DPIScale = true;
this.StyleManager.GlobalFont = true; this.StyleManager.GlobalFont = true;
this.StyleManager.GlobalFontName = "Tahoma"; this.StyleManager.GlobalFontName = "Tahoma";
this.StyleManager.MultiLanguageSupport = true;
// //
// uiNavBar1 // uiNavBar1
// //
@ -92,7 +128,7 @@
this.uiNavBar1.MenuSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250))))); this.uiNavBar1.MenuSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
this.uiNavBar1.MenuStyle = Sunny.UI.UIMenuStyle.White; this.uiNavBar1.MenuStyle = Sunny.UI.UIMenuStyle.White;
this.uiNavBar1.Name = "uiNavBar1"; this.uiNavBar1.Name = "uiNavBar1";
this.uiNavBar1.Size = new System.Drawing.Size(1096, 126); this.uiNavBar1.Size = new System.Drawing.Size(1128, 126);
this.uiNavBar1.TabIndex = 1; this.uiNavBar1.TabIndex = 1;
this.uiNavBar1.Text = "uiNavBar1"; this.uiNavBar1.Text = "uiNavBar1";
this.uiNavBar1.MenuItemClick += new Sunny.UI.UINavBar.OnMenuItemClick(this.uiNavBar1_MenuItemClick); this.uiNavBar1.MenuItemClick += new Sunny.UI.UINavBar.OnMenuItemClick(this.uiNavBar1_MenuItemClick);
@ -101,7 +137,7 @@
// //
this.uiAvatar1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.uiAvatar1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.uiAvatar1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiAvatar1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiAvatar1.Location = new System.Drawing.Point(1016, 33); this.uiAvatar1.Location = new System.Drawing.Point(1048, 33);
this.uiAvatar1.MinimumSize = new System.Drawing.Size(1, 1); this.uiAvatar1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiAvatar1.Name = "uiAvatar1"; this.uiAvatar1.Name = "uiAvatar1";
this.uiAvatar1.Size = new System.Drawing.Size(60, 60); this.uiAvatar1.Size = new System.Drawing.Size(60, 60);
@ -116,7 +152,6 @@
this.uiLogo1.MinimumSize = new System.Drawing.Size(300, 80); this.uiLogo1.MinimumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.Name = "uiLogo1"; this.uiLogo1.Name = "uiLogo1";
this.uiLogo1.Size = new System.Drawing.Size(300, 80); this.uiLogo1.Size = new System.Drawing.Size(300, 80);
this.uiLogo1.Style = Sunny.UI.UIStyle.Custom;
this.uiLogo1.TabIndex = 4; this.uiLogo1.TabIndex = 4;
this.uiLogo1.Text = "uiLogo1"; this.uiLogo1.Text = "uiLogo1";
// //
@ -127,13 +162,13 @@
this.uiPanel1.Controls.Add(this.uiPanel2); this.uiPanel1.Controls.Add(this.uiPanel2);
this.uiPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; this.uiPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.uiPanel1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiPanel1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiPanel1.Location = new System.Drawing.Point(2, 734); this.uiPanel1.Location = new System.Drawing.Point(2, 812);
this.uiPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiPanel1.MinimumSize = new System.Drawing.Size(1, 1); this.uiPanel1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiPanel1.Name = "uiPanel1"; this.uiPanel1.Name = "uiPanel1";
this.uiPanel1.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiPanel1.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiPanel1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Top; this.uiPanel1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Top;
this.uiPanel1.Size = new System.Drawing.Size(1096, 32); this.uiPanel1.Size = new System.Drawing.Size(1128, 32);
this.uiPanel1.TabIndex = 3; this.uiPanel1.TabIndex = 3;
this.uiPanel1.Text = null; this.uiPanel1.Text = null;
this.uiPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; this.uiPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
@ -148,7 +183,7 @@
this.uiPanel4.Name = "uiPanel4"; this.uiPanel4.Name = "uiPanel4";
this.uiPanel4.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiPanel4.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiPanel4.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Top; this.uiPanel4.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Top;
this.uiPanel4.Size = new System.Drawing.Size(524, 32); this.uiPanel4.Size = new System.Drawing.Size(556, 32);
this.uiPanel4.TabIndex = 2; this.uiPanel4.TabIndex = 2;
this.uiPanel4.Text = null; this.uiPanel4.Text = null;
this.uiPanel4.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; this.uiPanel4.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
@ -157,9 +192,10 @@
// //
this.uiPanel3.Dock = System.Windows.Forms.DockStyle.Right; this.uiPanel3.Dock = System.Windows.Forms.DockStyle.Right;
this.uiPanel3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiPanel3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiPanel3.Location = new System.Drawing.Point(810, 0); this.uiPanel3.Location = new System.Drawing.Point(842, 0);
this.uiPanel3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiPanel3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiPanel3.MinimumSize = new System.Drawing.Size(1, 1); this.uiPanel3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiPanel3.MultiLanguageSupport = false;
this.uiPanel3.Name = "uiPanel3"; this.uiPanel3.Name = "uiPanel3";
this.uiPanel3.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiPanel3.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiPanel3.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top))); this.uiPanel3.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)));
@ -175,6 +211,7 @@
this.uiPanel2.Location = new System.Drawing.Point(0, 0); this.uiPanel2.Location = new System.Drawing.Point(0, 0);
this.uiPanel2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiPanel2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiPanel2.MinimumSize = new System.Drawing.Size(1, 1); this.uiPanel2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiPanel2.MultiLanguageSupport = false;
this.uiPanel2.Name = "uiPanel2"; this.uiPanel2.Name = "uiPanel2";
this.uiPanel2.RadiusSides = Sunny.UI.UICornerRadiusSides.None; this.uiPanel2.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiPanel2.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right))); this.uiPanel2.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)));
@ -190,12 +227,15 @@
this.uiNavMenu1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll; this.uiNavMenu1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
this.uiNavMenu1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiNavMenu1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiNavMenu1.FullRowSelect = true; this.uiNavMenu1.FullRowSelect = true;
this.uiNavMenu1.HotTracking = true;
this.uiNavMenu1.ItemHeight = 35; this.uiNavMenu1.ItemHeight = 35;
this.uiNavMenu1.Location = new System.Drawing.Point(2, 162); this.uiNavMenu1.Location = new System.Drawing.Point(2, 162);
this.uiNavMenu1.Name = "uiNavMenu1"; this.uiNavMenu1.Name = "uiNavMenu1";
this.uiNavMenu1.ShowLines = false; this.uiNavMenu1.ShowLines = false;
this.uiNavMenu1.ShowOneNode = true; this.uiNavMenu1.ShowOneNode = true;
this.uiNavMenu1.Size = new System.Drawing.Size(286, 572); this.uiNavMenu1.ShowPlusMinus = false;
this.uiNavMenu1.ShowRootLines = false;
this.uiNavMenu1.Size = new System.Drawing.Size(286, 650);
this.uiNavMenu1.TabIndex = 4; this.uiNavMenu1.TabIndex = 4;
this.uiNavMenu1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiNavMenu1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
// //
@ -210,7 +250,7 @@
this.uiTabControl1.MainPage = ""; this.uiTabControl1.MainPage = "";
this.uiTabControl1.Name = "uiTabControl1"; this.uiTabControl1.Name = "uiTabControl1";
this.uiTabControl1.SelectedIndex = 0; this.uiTabControl1.SelectedIndex = 0;
this.uiTabControl1.Size = new System.Drawing.Size(810, 572); this.uiTabControl1.Size = new System.Drawing.Size(842, 650);
this.uiTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; this.uiTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.uiTabControl1.TabIndex = 5; this.uiTabControl1.TabIndex = 5;
this.uiTabControl1.TabVisible = false; this.uiTabControl1.TabVisible = false;
@ -223,20 +263,23 @@
// FMain // FMain
// //
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1100, 768); this.ClientSize = new System.Drawing.Size(1132, 846);
this.CloseAskString = "您确认要退出程序吗?";
this.Controls.Add(this.uiTabControl1); this.Controls.Add(this.uiTabControl1);
this.Controls.Add(this.uiNavMenu1); this.Controls.Add(this.uiNavMenu1);
this.Controls.Add(this.uiPanel1); this.Controls.Add(this.uiPanel1);
this.Controls.Add(this.uiNavBar1); this.Controls.Add(this.uiNavBar1);
this.ExtendBox = true; this.ExtendBox = true;
this.ExtendMenu = this.uiContextMenuStrip1; this.ExtendMenu = this.uiContextMenuStrip1;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.IconImage = global::Sunny.UI.Demo.Properties.Resources.Sunny24;
this.MainTabControl = this.uiTabControl1; this.MainTabControl = this.uiTabControl1;
this.Name = "FMain"; this.Name = "FMain";
this.Padding = new System.Windows.Forms.Padding(2, 36, 2, 2); this.Padding = new System.Windows.Forms.Padding(2, 36, 2, 2);
this.Resizable = true;
this.ShowDragStretch = true; this.ShowDragStretch = true;
this.ShowRadius = false;
this.Text = "Form1"; this.Text = "Form1";
this.ZoomScaleRect = new System.Drawing.Rectangle(15, 15, 800, 450); this.ZoomScaleRect = new System.Drawing.Rectangle(15, 15, 1132, 846);
this.HotKeyEventHandler += new Sunny.UI.HotKeyEventHandler(this.Form1_HotKeyEventHandler); this.HotKeyEventHandler += new Sunny.UI.HotKeyEventHandler(this.Form1_HotKeyEventHandler);
this.PageSelected += new Sunny.UI.OnUIPageChanged(this.Form1_PageSelected); this.PageSelected += new Sunny.UI.OnUIPageChanged(this.Form1_PageSelected);
this.ReceiveParams += new Sunny.UI.OnReceiveParams(this.Form1_ReceiveParams); this.ReceiveParams += new Sunny.UI.OnReceiveParams(this.Form1_ReceiveParams);
@ -250,8 +293,8 @@
#endregion #endregion
private UIContextMenuStrip uiContextMenuStrip1; private UIContextMenuStrip uiContextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem NHome;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem NAbout;
private UIStyleManager StyleManager; private UIStyleManager StyleManager;
private UINavBar uiNavBar1; private UINavBar uiNavBar1;
private UIPanel uiPanel1; private UIPanel uiPanel1;
@ -263,5 +306,9 @@
private UIPanel uiPanel3; private UIPanel uiPanel3;
private System.Windows.Forms.Timer timer1; private System.Windows.Forms.Timer timer1;
private UIPanel uiPanel4; private UIPanel uiPanel4;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem NZhCN;
private System.Windows.Forms.ToolStripMenuItem NZhTW;
private System.Windows.Forms.ToolStripMenuItem NEnUS;
} }
} }

View File

@ -5,12 +5,23 @@ using System.Windows.Forms;
namespace Sunny.UI.Demo namespace Sunny.UI.Demo
{ {
/// <summary>
/// WindowsXP、Windows7、Windows10、Windows11 建议使用 UIForm
/// Windows10、Windows11 可尝试使用 UIForm2更接近原生窗体使用体验用 UIForm 也可以
/// </summary>
public partial class FMain : UIForm public partial class FMain : UIForm
{ {
public FMain() public FMain()
{ {
InitializeComponent(); InitializeComponent();
//关联窗体承载多页面框架的容器UITabControl
//窗体上如果只有一个UITabControl也会自动关联超过一个需要手动关联
this.MainTabControl = uiTabControl1;
uiNavBar1.TabControl = uiTabControl1;
uiNavMenu1.TabControl = uiTabControl1;
//设置初始页面索引(关联页面,唯一不重复即可)
int pageIndex = 1000; int pageIndex = 1000;
//uiNavBar1设置节点也可以在Nodes属性里配置 //uiNavBar1设置节点也可以在Nodes属性里配置
@ -86,21 +97,25 @@ namespace Sunny.UI.Demo
var styles = UIStyles.PopularStyles(); var styles = UIStyles.PopularStyles();
foreach (UIStyle style in styles) foreach (UIStyle style in styles)
{ {
uiNavBar1.CreateChildNode(uiNavBar1.Nodes[4], style.DisplayText(), style.Value()); uiNavBar1.CreateChildNode(uiNavBar1.Nodes[4], style.Description(), style.Value());
} }
uiNavBar1.CreateChildNode(uiNavBar1.Nodes[4], "多彩主题", UIStyle.Colorful.Value()); var node = uiNavBar1.CreateChildNode(uiNavBar1.Nodes[4], "字体图标", 99999);
uiNavBar1.SetNodeSymbol(node, 558426);
node = uiNavBar1.CreateChildNode(uiNavBar1.Nodes[4], "多彩主题", UIStyle.Colorful.Value());
uiNavBar1.SetNodeSymbol(node, 558295);
//左侧导航主节点关联页面 //左侧导航主节点关联页面
uiNavMenu1.CreateNode(AddPage(new FColorful())); uiNavMenu1.CreateNode(AddPage(new FSymbols(), 99999));
uiNavMenu1.CreateNode(AddPage(new FColorful(), UIStyle.Colorful.Value()));
//直接增加一个页面,不在左侧列表显示 //直接增加一个页面,不在左侧列表显示
//AddPage(new FColorful());
AddPage(new FCommon()); AddPage(new FCommon());
//选中第一个节点 //选中第一个节点
uiNavMenu1.SelectPage(1002); uiNavMenu1.SelectPage(1002);
uiPanel2.Text = Text = Version; uiPanel2.Text = Text = Version;
//设置全局热键
RegisterHotKey(UI.ModifierKeys.Shift, Keys.F8); RegisterHotKey(UI.ModifierKeys.Shift, Keys.F8);
//根据页面类型获取页面 //根据页面类型获取页面
@ -135,7 +150,7 @@ namespace Sunny.UI.Demo
{ {
case 4: case 4:
UIStyle style = (UIStyle)pageIndex; UIStyle style = (UIStyle)pageIndex;
if (style != UIStyle.Colorful) if (pageIndex < UIStyle.Colorful.Value())
StyleManager.Style = style; StyleManager.Style = style;
else else
uiNavMenu1.SelectPage(pageIndex); uiNavMenu1.SelectPage(pageIndex);
@ -162,11 +177,16 @@ namespace Sunny.UI.Demo
Process.Start("https://gitee.com/yhuse/SunnyUI"); Process.Start("https://gitee.com/yhuse/SunnyUI");
} }
/// <summary>
/// 全局热键事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_HotKeyEventHandler(object sender, HotKeyEventArgs e) private void Form1_HotKeyEventHandler(object sender, HotKeyEventArgs e)
{ {
if (e.hotKey.ModifierKey == UI.ModifierKeys.Shift && e.hotKey.Key == Keys.F8) if (e.hotKey.ModifierKey == UI.ModifierKeys.Shift && e.hotKey.Key == Keys.F8)
{ {
ShowInfoTip("您按下了全局系统热键 Shift+F8"); this.ShowInfoTip("您按下了全局系统热键 Shift+F8");
} }
} }
@ -180,5 +200,56 @@ namespace Sunny.UI.Demo
{ {
uiPanel3.Text = DateTime.Now.DateTimeString(); uiPanel3.Text = DateTime.Now.DateTimeString();
} }
private void NZhCN_Click(object sender, EventArgs e)
{
UIStyles.CultureInfo = CultureInfos.zh_CN;
}
private void NZhTW_Click(object sender, EventArgs e)
{
UIStyles.CultureInfo = CultureInfos.zh_TW;
}
private void NEnUS_Click(object sender, EventArgs e)
{
UIStyles.CultureInfo = CultureInfos.en_US;
}
/// <summary>
/// 重载多语翻译
/// </summary>
public override void Translate()
{
//必须保留
base.Translate();
//读取翻译代码中的多语资源
CodeTranslator.Load(this);
//设置多语资源
this.CloseAskString = CodeTranslator.Current.CloseAskString;
this.uiNavMenu1.Nodes[0].Text = this.uiNavBar1.Nodes[0].Text = CodeTranslator.Current.Controls;
this.uiNavMenu1.Nodes[1].Text = this.uiNavBar1.Nodes[1].Text = CodeTranslator.Current.Forms;
this.uiNavMenu1.Nodes[2].Text = this.uiNavBar1.Nodes[2].Text = CodeTranslator.Current.Charts;
this.uiNavMenu1.Nodes[3].Text = this.uiNavBar1.Nodes[3].Text = CodeTranslator.Current.Industrial;
this.uiNavBar1.Nodes[4].Text = CodeTranslator.Current.Theme;
this.uiNavMenu1.Nodes[4].Text = CodeTranslator.Current.Symbols;
this.uiNavMenu1.Nodes[5].Text = CodeTranslator.Current.Colorful;
this.uiNavBar1.Invalidate();
this.uiNavMenu1.Invalidate();
}
private class CodeTranslator : IniCodeTranslator<CodeTranslator>
{
public string CloseAskString { get; set; } = "您确认要退出程序吗?";
public string Controls { get; set; } = "控件";
public string Forms { get; set; } = "窗体";
public string Charts { get; set; } = "图表";
public string Industrial { get; set; } = "工控";
public string Theme { get; set; } = "主题";
public string Symbols { get; set; } = "字体图标";
public string Colorful { get; set; } = "多彩主题";
}
} }
} }

View File

@ -123,6 +123,747 @@
<metadata name="StyleManager.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="StyleManager.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>506, 17</value> <value>506, 17</value>
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAcAMDAAAAEACACoDgAAdgAAACAgAAABAAgAqAgAAB4PAAAQEAAAAQAIAGgFAADGFwAASEgAAAEA
IACIVAAALh0AADAwAAABACAAqCUAALZxAAAgIAAAAQAgAKgQAABelwAAEBAAAAEAIABoBAAABqgAACgA
AAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAANcJlADnDZgA9w2kAQcNpAEbF
cABKxnIATch1AFPFcwBcxHMAUsp6AFnLfgD/njwA/6A/AP+eQAD/oEUA/6NLAP+nVwD/qVcA/6laAP+s
YgD+sWsA/rNyAP64dgD+unoANWf3ADZp9wA6a/cANmn4ADlq+AA7bPgAPGz4AEFv9wBAbvgARnL3AENw
+ABFcfgASXX4AEx3+ABOefgAUnv4AGPNhAB7yIIAbtGOAHPQjwB005MAf9SZADag5wA5oucAO6PoAF+E
9wBZgPgAXoT4AGuO+ABsjfgAcZH4AHWT+ABylPgAd5n4AHia+ABEpecARKXoAEim6ABNqekAV63pAF2s
6wBdsOoAYrDqAGu16wBvuOwAdLrsAHm77AAAxf8AC8X/ABvH/wARyP8AHMj/ACPJ/wAryv8AMsz/AD7N
/wBG0f8AStH+AFPW/wBd1v4AYtb+AGbY/gBs2P4Ae9r+AJeRjQCYko8AmZOQAJqUkQCclZMAnZeUAJ+Z
lgCinZoApJ6cAKahngCoop8Ap6OgAKqlogCtqaYAtLCuALazsQC7t7YAvLm2AL26uAD+vYQA/r+KAIbG
gwCay5EAgdecAKXMlACL16IAi9iiAJXYpQCX26sAmNusALfSpACl37YAuN+8ALDjvwD+wIwA/8OSAP7G
mAD+yJwAwNOpAMzTrADCwL4Ay9m1AP7LowD+z6kA/tCuAP7TsgD+1rgA/ti+AIKd+QCGvu8Ag6D4AI+m
+QCSqvkAlav5AJOs+QCWrPoAmK74AKK1+gCsvPkAtuPCALrlxQC85cgAg8LuAIzD7gCQw+8AjsLwAJ7M
8ACC3/4Ai93+AKTM8QCtz/MAs8L6ALnF+QC/zPsAptDxAK7T8gCz1PIAleH+AJ3i/gCk4v4Arub+ALbp
/QC56f4AxcPBAMnGxQDLyMYAzMrIANLQzgDT0dAA1tXVANnY1gDa2dkA3dzbAOXexAD928MA/t/JAM3r
1QDY798A2vDfAObhygDq488A/uHMAOHg3gD76dwAwMz6AMnc9gDG0foAytP8ANTa+gDd9OUAx+D2AMzh
9QDP4PgAxOr9AMzu/QDS4/YA2On3AN3j+gDY5fgA0u/+AM7w/QDc8v0A5uXlAOjn5wDp6ekA7OvpAO7s
6wDu7ewA9O7jAP3t4wDw7u4A/e7oAOD15gDl9eoA6/btAPbx7AD78e0A4eX6AOTu+QDq7PsA7O77AO7v
/ADu9/AA5vP7AOvz+wDu+P0A8vHxAPP38QD09PMA9fX1APv18wDz+fQA+Pj3APDy+wD19voA8fL8APD3
/QD19vwA9/n4APb4/AD5+voA/Pr6APz8+wD5+vwA/fv8APr8/QD///8AAAAAAAAAAAAAAAAAAAAAAAAA
AAD9/f39/f39/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/f39+OX0/e3x/f39
/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/fTOopE5NTSP62dmZ6yx1e39/QAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/f30w400JSAcHRk61WJbWlxfZGu07f39AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAP396aE1IxwdHR0dHR071WJcXFxcXFtcZrHb/QAAAAAAAAAAAAAAAAAAAAAAAAAA/f3OiSYdHR0d
IR0jHR0762JcXFxcXFxcXF9n1P39AAAAAAAAAAAAAAAAAAAAAAD9+JM0Gh0dIR0dIR0dHR071WVcXFxc
XFxcXFxbYa3x/QAAAAAAAAAAAAAAAAAAAP34oCYdHR0dISEdHSMdIxw722JcXFxcXFxcXFxcXFyv7f0A
AAAAAAAAAAAAAAAA/fiPIx0dHSMdHSEhHR0hHR071WVcXF1dXVxcXFxcXFxcae39AAAAAAAAAAAAAAD9
+KAlHR0hHR0jHR0hIR0dHR0722JcXVxcXF1dXVxcXFxcXK/4/QAAAAAAAAAAAP39oCgdHSEdIR0dIR0d
ISEdIxw71WVcXF1dXVxcXF1dXFxcXF+t/QAAAAAAAAAAAP30OR0dIR0dIR0hHSEdHSEdHR0722JcXFxc
XF1dXVxcX1xcXFxh0/0AAAAAAAAA/f3pxY8oHR0hHSEdIR0hHSEhHR071WVcXF1dXVxcXF1cXF9cXFxm
0/39AAAAAAAA/ciZzOWiOSEdHR0jHSEdIR0hHR0722JcXFxcXF1dXVxdXFxcYa7VwMD9AAAAAAD9+EYw
P4rO6aA5Ix0dIR0hHR0dHSWL22VcW1xcXVxcXFxcXGGs1NqDEhbv/QAAAAD9zD8wMDFDnuXikDQdHR0h
HR00i6HF/bNpZVxcXF1dXVtcaLTrtxYPDA+3/QAAAP34mzAxMTEwPUOf6eKPKB0dM5Ll/f39/f397a9l
W1xcXGez4bgWDwwNDAx77wAAAP3oRTAxMTExMDE+isLlxDk0ovj9/f39/f39/f20YltirdvAfBINDQ0N
DQwUwP0AAP3HPzExMTExMT0xMD6ayeXO/f39AAAAAAAA/f39v6/V2n0TDA0NDQ0NDQwQh/0AAP2fPzEx
MTE9MTExMTA8Qcz9/f0AAAAAAAAAAP39/e+HFg8MDA0NDQ0NDQ4Pff0A/f2XMDExMTExMTExMTEwP+j9
/QAAAAAAAAAAAAD9/e8UDAwPDQ0NDQ0NDQ0MF/0A/f1GMDExMTExMTExMTEwl/39AAAAAAAAAAAAAAAA
/f1sDQ0NDQ0NDQ0NDQ0MFu/9/f1FMDExMT0xMTE9MTE8m/39AAAAAAAAAAAAAAAA/f2HEAwPDQ0NDQ0N
DQ0MFOH9/fhEMDExMTExMTExMTE/n/39AAAAAAAAAAAAAAAA/f2HEQwNDQ0NDQ0NDQ0MFNr9/fhFMDEx
MTExMTExMTE/n/39AAAAAAAAAAAAAAAA/f2HEQwNDQ0NDQ0NDQ0MFNz9/f1FMDExMTE9MTExMTE9m/39
AAAAAAAAAAAAAAAA/f2HDwwNDQ0NDQ0NDQ0MFO/9/f1GMDExMTExMTExMTEwRv39/QAAAAAAAAAAAAAA
/f1+EAwMDw0NDQ0NDQ0MFu8A/f2YMTExPTExMTE9MTA/mPj9/QAAAAAAAAAAAAD9/f3ahhMODA0NDQ0N
DQ0MGP0AAP2lPzExMTExMTExP0bM6Mrq/f0AAAAAAAAAAP398XmC2dqEEw4MDA8NDQwPg/0AAP3MPzEx
MTExMTBCpenRV06m/f39AAAAAAAA/f39lAoIb7zhuHsQDAwNDwwQt/0AAP3qRjAxMTE8QqTp0VhMSEhL
pur9/f39/f39/ed6BQEBAQlxveG4bBAMDAwW2v0AAP34mzAxMD+YzOinT0lISEhITFfQ/f39/f39u3MH
AQICAwIEKn/a2oYUDAx88QAAAAD90j88l8jqqVBJSEhISEhISEhNUp2r8XgrBwECAgICAgIDAQNugNrh
gxa4/QAAAAD9/Zuk6dFUTEhISEhISEhISEhISElUxgoBAQICAgICAgICAgIDCHG23Nrx/QAAAAAA/f3S
VkxISEhISEhISEhISEhISEhTxgsBAgICAgICAgICAgICAgEJd+v9AAAAAAAA/fioSEhISEhISEhISEhI
SEhISEhTxgsBAgICAgICAgICAgICAgIBdOz9AAAAAAAAAP3qUkhISEhISEhISEhISEhISEhTxgsBAgIC
AgICBAICAgICAgIp3f0AAAAAAAAAAP39q09ISEhISEhISEhISEhISEhTxgsBAgICBAICAgICBAICAgd6
/QAAAAAAAAAAAAD9/cpNSEhISEhISEhISEhISEhTxgsBAgICAgICAgQCAgICB5X98QAAAAAAAAAAAAAA
/finTUhISEhISEhISEhISEhTxgsBAgICAgQCAgICAgIGdfH9AAAAAAAAAAAAAAAAAP39yk9ISEhISEhI
SEhISEhTxgsBAgICAgICAgICAgqV8f0AAAAAAAAAAAAAAAAAAAD9/atSSEhISEhISEhISEhTxgsBAgIC
BAICBAICK5Xx/QAAAAAAAAAAAAAAAAAAAAAA/f34pk5ISEhISEhISEhTxgsBAgICAgICAgt13/39AAAA
AAAAAAAAAAAAAAAAAAAAAP39+NFXTUhISEhISEhTxgsBAgICAgEHLrnx/QAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA/f390qdUTUxJSEhTxgoBAgcHLHi78f39AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f3o
yqlYU1Gc3nAtc5S53v39/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f39/f39/fj9/f39
/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39/f39AAAAAAAAAAAAAAAAAAAA
AAAAAAAA///wD///AAD//wAB//8AAP/8AAA//wAA//AAAA//AAD/wAAAB/8AAP+AAAAB/wAA/wAAAAD/
AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAB8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAA
AAAAAwAAwAAAAAADAACAAAAAAAMAAIAAAAAAAQAAgAAH4AABAACAAA/wAAEAAAAAH/gAAQAAAAA//AAA
AAAAAD/8AAAAAAAAP/wAAAAAAAA//AAAAAAAAD/8AAAAAAAAH/wAAQAAAAAf+AABAACAAA/wAAEAAIAA
B+AAAQAAgAAAAAABAACAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAAAAAABwAA8AAAAAAP
AADwAAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP8AAAAA/wAA/4AAAAH/AAD/wAAAB/8AAP/w
AAAP/wAA//wAAD//AAD//4AB//8AAP//+B///wAAKAAAACAAAABAAAAAAQAIAAAAAAAABAAAAAAAAAAA
AAAAAQAAAAEAAAAAAAA2wmUAOcJlADzDZwA7w2gAPcJoAD3EaQA/xGwAQcVtAEXGbwBGxnAAVcVzAFzF
dQByx34A/549AP+gPwD/n0AA/6BBAP+gRAD+okoA/qRMAP6nVAD+qFQA/qteAP6sXgD+r2cA/rRvAP62
dQA3afcAOGn3ADlq+AA8a/gAPGz4AEFw9wBGc/gAS3f4AFZ++ABgzIIAac6IAHjNiwBt0Y4AcNGPADmi
5wA8o+cAO6PoAD2j6AA/pOgAWoH4AFyD+ABehPgAYYj3AGKJ+ABlifgAZ4z4AGuP+ABukPgAcJL4AHyb
+ABBpOcARaboAEqo6ABTq+kAXq/qAGSx6wBntesAabXrAHy/7QAAxf8ABsX/AAvF/wAMxv8AEsf+ABXH
/wAZyf4AKcv+ADjP/gA30P8APtD+AEDP/gBK0v4ATtL+AFrW/gCZk5AAmpSRAJyWkwCdl5QAnpiVAKKc
mQCloJ0Ap6OgAKijoQCppaIAr6uoALm2swC6trQAvru5AP2+hgDAvLoAls+WAKTRnACc3rAApN+2AKPg
tgCj4LgAqeK7AK7hvQC74L4A/cCKAP7CjgD+xJIA/ceYAP7KnwDJ27kA/c2mAP3RqgD70q4A/dOuAP3X
twCKpPkAjaf5AJOs+QCVrvkApbn5AKi8+QCv5sEAsebCALrmxwCBwO4AiMLvAJfH8ACXyfAAmMrwAJvM
8ACczfEAgt39AInf/gCc0PMAoM7xALHC+gCwxPkAt8b5AKvT8gCx1/MAtdfzALXU9AC81/UAutnzAL3d
9QCK4P0AleH9AJni/QCd5f0Ao+H8ALDn/ADEwcAAx8TCANXOyQDQzcwA0N7AANLR0ADV09IA1tTTANfV
1ADa1NEA2NbVANrY2ADd29sA597FAPPYxAD93MIA/N3GAPDbywDp39cAyerSAM3r1QDX7t0A2e/fANbw
3gD94s4A6eDZAOzn2ADq6toA9uTTAPfl1QD85tUA/OnYAMTW9wDE3fUAydz2AMPQ+gDG0voAx9T5AMrV
+gDP2fkA3vPlAMvn+QDF7P0Ay+j5AMru/QDM7f0A0+X3ANnn9wDW6PcA2+D6ANHu/ADW8vwA3/T8AOLh
4ADl4+IA5uXkAO3r6wDv7OoA7OvsAO/t7QD17+AA8uvnAPns4QD47+QA8+7rAPDu7QDn8uUA5vPpAOb0
6gDo9OkA7fTuAO7u8wDl6voA5+z7AOnt+QDs7vsA8u/xAObx+QDh9PsA5fT6AODz/ADh9PwA7vD7APTx
8QD09/MA9fP0APX09AD59fMA/Pb1APb49gDx8/sA8vb7APH3/AD39/wA+Pf7APf4+wD1+fwA+fj5APz5
+QD6+fwA/Pr8AP///wAAAAAAAAAAAAAAAAAA5Pj4+PjmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADi5MB7
eXvRm52m1NQAAAAAAAAAAAAAAAAAAAAAAAD0wXcwIR4eMp9WUlJaX8/vAAAAAAAAAAAAAAAAAADi7Hkk
Hh4eHh40n1ZSUlJSWGHU1AAAAAAAAAAAAAAA4r00HB4eHiAeHjSfVlJSUlJSUlqk1AAAAAAAAAAAAOLA
MB4eHiAgHiAeNJ9XUlJSUlJSUlim2wAAAAAAAADkvTIeHh4gHiAgIB40pFZSUlZSUlJSUlim2wAAAAAA
APg4Hh4eICAgICAgHjSfVlJSUlZSVlZSUlrbAAAAAAD5yr13Ih4gICAgICAeNKRWUlZSUlJSUlJXXdf4
AAAAAMpBgLqLOCAgICAgICA3pFZSUlZSUlJWXKSoa7gAAADngisrPIG8ezUgICI5jMvvpF1XUlZWWqOr
YBQOa9gAAPRAKyorKz6QwXcvi/T4+Pj48Z9XVpuzbxgQDg4Y2AAAyDsqKio7KitAkeL45AAAAADv+NGs
cRgODw8PDhKqAOeQKyoqOyoqKyp/9OQAAAAAAADx8XEUEA4PDw8OEHIA+IkrKioqKjsqK5D4AAAAAAAA
AAD4dRIODw8PDxIObvj4iSsqOyoqKio7u/gAAAAAAAAAAPiyFA4PDw8PDw5r8fiJKyoqOyoqKju7+AAA
AAAAAAAA+LIUDg8PDw8PDm7x+IkrKioqKjsqK434AAAAAAAAAAD4qRIOEg8PDw8ObrnskioqOyoqOztB
u/nnAAAAAAAA7e61choSDg4SDg5yAADJPCoqKis7icOGlfjpAAAAAO34fCdwt24VDg4QErIAAPlAKys9
g8WGSkNElOv4+Pj432YGAQYNnrdrFg4Z2AAA54kuQruYUEZDQ0NHUJXG32goCQIEBAQLYqeqGm/WAAAA
55OZUUZDQ0NDQ0REREx8CQECAgQBBAQEDGO18QAAAAD4xUlDQ0NDQ0NDRERETHwGBAICAgQBBAEEBGr4
AAAAAAD5UENDQ0NDQ0NERERMfAkEBAICAgQEAQQm3wAAAAAAAOvGT0NDQ0NDQ0REREx8BgQBAgICAgIE
Ja3cAAAAAAAAAOfGT0NDQ0NDRERETHwIBAQCAgICAiWt3wAAAAAAAAAAAOvGUENDQ0NERERMfAkBBAIC
AgIprd8AAAAAAAAAAAAAAM74lkxDQ0REREx8BgQBBAYlZ9/CAAAAAAAAAAAAAAAAAAD5zpRQR0RETHwG
BggmZLDuAAAAAAAAAAAAAAAAAAAAAAAAzefGmZSXsWd+sN/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+Pj4+AAAAAAAAAAAAAAAAAAA//gf///AA///AAD//AAAP/gAAB/wAAAP4AAAB+AAAAfAAAADwAAAA4AA
AAGAAAABgAPAAQAH4AEAD/AAAA/wAAAP8AAAD/AAAAfgAYADwAGAAAABgAAAAcAAAAPAAAAD4AAAB+AA
AAfwAAAP+AAAH/wAAD//AAD//8AD///8P/8oAAAAEAAAACAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAAB
AAAAAQAAAAAAADnDZgA6xGcAPcRpAErFbgBex3gA/58+AP+gPwD/oEEA/qhUAP6rWgD+r2MA/rNtADtr
9wA9bfcAO2v4ADxs+ABNevgAUXz4AFd/+ABezYIActKRAHXTkwB41pcAOqPnADuj6AA8o+gAPaToAFiA
+ABpjfgAcJL5AHSV+QBApegARqfoAF2x6wBhs+sAcrrtAADF/wAHxv8AG8r/ABzL/wAvzv4AOM/+AEvT
/gBX1f4AWdb+AHHb/gCalJEAnJaUAKCalwCmoZ8AsKyqALq2swC7trQAvbe0AI/bpwCt1qcA+MqcAMrA
uQDxyaUA79KrAIC+7wCZsfoApLz4ALnnxwCGxO8Aldr5AKfE9gCuwPoAq+n9ALPm+wDKx8UA0c/OAMHk
xQD8480A/OTOAPLj1gD65NIA/OvdAPzs3wDH3vYA0dr7AMXg9QDR5/cA3+b7ANvr+ADc7fkAz/H9ANby
/QDp7+IA6+rpAO3s7AD97eIA4vTnAOb26wDl6/wA7fjwAOfy+gDi9v0A6fP6AO3x/ADr+P0A8vLxAPD3
+wDy9fwA8fr9APb6/AD5+fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////AAAAAAAAZFRRWloAAAAAAAAAAABoRBwOETUwMkgAAAAAAABkHg4PDxE1MDAwM2YAAABq
Hg8PDw8RNTAvMC8zAAAAUkMdDw8OEjUvLy8xOk0AaCIgPT8SPl9mRzA1OwkKAGEbGxshUGgAAGtMCwYH
CE5TGBsbG1YAAAAAXAgHBwZKUxgbGxtWAAAAAFwICAcGSmQYGxtBRmoAAGtJPAoGCE5qIyRCKSUuWF03
AgQ4OQwAAFYrJSUlJSgXAgICAgVZAABqLCUlJSUoFwICAgIVAAAAAGUtJSUlKBcCAgIVYAAAAAAAAEUq
JSgXAxRAAAAAAAAAAAAAAGFXXV4AAAAAAAD4PwAA4A8AAMADAACAAwAAgAEAAAABAAABgAAAA8AAAAPA
AAABgAAAAAEAAIABAACAAwAAwAMAAPAPAAD8PwAAKAAAAEgAAACQAAAAAQAgAAAAAABgVAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPn5
/QL9/f0h/f39Pv39/VX9/f1p/v39ef79/X/+/f2A/f39gP39/YD9/f2A/f39fv39/XT9/f1j/f39Tf39
/TP7+/sWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/RP9/f1B/f39av7+/Y/+/v2w/v79zf//
/eX//v34///9/////f////3///79//39/f///v7////////////+/v/y/v7+3P7+/sL+/v6l/v7+g/39
/V39/f0y+/v7CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAPv7/Qf9/f04/f39cP39/aP+/v3R///99////f////7////9/////f/5+fv/7O77/+Hk
+//h4/r/7/H9///////18/P/6efn//Hx7//4+Pj//v39//////////////////7+/uz+/v7C/v7+k/39
/V39/f0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7+/0M/f39SP39
/Yz+/v3I///9+P///f////3/+vn9/+Xn+//R1/r/sMH5/5Su+f+Oqfr/g5/5/3eV+f9ykfn/u8r7////
///Z19X/sKup/7m2s//Bvrv/xsLB/9HPzv/d3Nz/6unp//n4+f////////////7+/uv+/v60/v7+dvv7
+zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+/39Bv39/UP9/f2S/v792f///f////3/+vr7/+Pm
+/+8yPr/k6v5/3uY+f9oiPj/R3L2/zBl+P80Zvj/NGf4/zRn+P8rYfb/mbL6///////Lx8X/kouI/5aQ
jP+XkI3/lY+L/5qVkv+oo6H/tK+t/8G9vP/U0tH/6Ojo//n4+f//////////+f7+/sH+/f53/fv7KQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD9/f0o/f39f/79/dP///3////9//j4+//N1fr/m7D6/3iV+f9Tefj/NWf2/zRn
+P83afj/Omv4/zpr+P86a/j/Omz4/zpr+P8xZfb/nLX6///////Nycb/lY+L/5qUkf+alJH/mpSR/5mT
kP+Yko//l5GO/5WPjP+empf/sq6s/8PAv//c2tn/9vX2///////////4/f7+uf3+/WH9+/sTAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39Cf39
/VP9/f23//79+f///f/4+Pv/ztX6/5it+f9ihfj/PGv4/zRn+P83avj/Omv4/zps+P88bPj/PGz4/zxs
+P88bPj/PGz4/zpr+P8yZvj/nLX6///////Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+alJH/mpSR/5qU
kf+Zko//l5GN/5eRjv+moZ7/wL27/9za2f/29fX///////7//+n9/f2V/f39MwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0b/f39e/39/d7///3////9/9zg
+/+dsPr/YoX4/zxr+P81afj/Omv4/zps+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr
+P8yZfj/nLX6///////Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mpWS/5qU
kf+Yko//l5KO/6ahnv/Cvbv/4+Hg//v9/f///////v7+wv39/VX7+/sIAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/Sz9/f2d/v798////f/19fv/uMb5/2+P+f9Bbvj/NGj4/zpr
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8yZfj/nLX6////
///Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mpSR/5iS
jv+Yko//rKel/9HPzv/z8fH///////7+/t39/f1y+/v7EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA/f39N/39/bL///3+///9/+Pm+/+brvn/Unv4/zJm9v84a/j/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8yZfj/nLX6///////Nycb/lo+M/5qU
kf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+Zk5D/lpCN/6Ca
mP+/u7n/5uXl///+///////s/f39h/v7+xoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f07/f39vP//
/f////3/3OL7/4ad+f9Db/j/NWn4/zps+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8yZfj/nLX6///////Nycb/lo+M/5qUkf+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mpSR/5iSj/+Zk5D/sa2r/+Df
3v/+/v3/////9P39/ZH7+/scAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/Tj9/f29///9/////f/S2fv/eJT5/z9t
+P83avj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zpr+P8yZfj/nLX6///////Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+Zk5D/l5GO/6yopf/b2dj/+vr6////
//b9/f2Q+/v7GQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/f39Lf39/bT///3////9/8/Y+/9vjvn/Omn4/zhr+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr
+P8yZfj/nLX6///////Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mpOQ/5aRjf+noqH/2NbW//v7+//////y/f39g/v7
+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD9/f0d/f39oP/+/f////3/2N37/3WS+f86avj/OGv4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8yZfj/nLX6////
///Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5qUkf+WkIz/qKOh/9za2//+/v7/////6v39/Wz6+voEAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/Qv9/f1//v799v//
/f/e4/v/gZr5/z9u+P84a/j/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8yZfj/nLX6///////Nycb/lo+M/5qU
kf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+alJH/lpCN/62opv/h4OD//v////7+/tj9/f1NAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/Vj+/v3h///9/+jq+/+Novn/QW74/zdq
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8yZfj/nLX6///////Nycb/lo+M/5qUkf+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/mpOQ/5eRjv+xraz/5+fm///////9/f25/f39LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/f39Lf39/bz///3/9vb7/6Gz+v9EcPj/N2n4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zpr+P8yZfj/nLX6///////Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5mT
kP+Zk5D/wL28//Pz9f/////9/v39ivv7+wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD9/f0J/f39hv39/fz///3/7Oz7/4ui+f83aPj/NGj4/zpr+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr
+P8yZfj/nLX6///////Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+YkY7/n5mX/9DO
zf/7/fv//v7/4P39/VMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f1K/f392f/+
/f////7/+fn9/9Xa+v+Zrvn/X4L5/zpq+P83avj/Omz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8yZfj/nLX6////
///Nycb/lo+M/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mpSR/5mTkP+XkI3/oJqY/8/NzP/6+/r//v////v7
+6r7+/odAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/RL9/f2a/v79//j5+//U5Pb/1OL4//76
/f/6+fv/y9P7/4+m+v9Re/j/MWb4/zhq+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8yZvj/nLX6///////Nycb/lo+M/5qU
kf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+Zk5D/lpCM/56Zlv+5tbP/19fX//H19v/+/////fv6//v9/fD9+/1oAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/VH+/f3g///9/9nn9v9+uuz/aLDs/6nN8//n6/n////9//b1
/f+6yfr/epj5/0p0+P80Z/j/Omv4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P8xZfb/nLX6///////Nycb/lY+L/5qUkf+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mZOQ/5eR
jv+blZP/sayq/9DOzv/v8fP////////s4f//0rL//uTS//3////9/v6y/f37IgAAAAAAAAAAAAAAAAAA
AAAAAAAA/f39DP39/ZT//v3//vv7/6XP8f9Bo+j/MKDn/0un6f98uO7/udX1//Hx+v///v7/6+v9/629
+v9ujvn/QW/4/zVo+P86a/j/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P86a/j/Omv4/zVn+P8rYPb/mbL6///////Lx8X/k4yI/5mSj/+alJH/mpSR/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5qUkf+Yko//mJKP/6mkof/JxsX/6Onq//3/
////8+7//9Ox//+1dP//oE3//8WW//35+P/9///u/f39YwAAAAAAAAAAAAAAAAAAAAAAAAAA/f39Q/39
/dL///3/2+j4/3C26/80oOf/OqPo/zej6P83oOf/VKrq/4u+7//F2Pb/+Pb9/////v/e4fr/n7L6/2CD
+f86afj/N2r4/zps+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/Omv4/zdp+P8xZvb/SXT4/2+N
+f90k/n/u8r7///////Z2Nb/q6ek/52Ylf+Vj4v/mJGO/5mTkP+alZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+alJH/mZOP/5eQjf+kn5z/wL27/9/f3//5/f////n4///cwv//vIT//6NO//+b
N///mzf//61l//7gzv/7/////f7+ofn4+hMAAAAAAAAAAAAAAAAAAAAA/f39e/7+/f7///3/qtLz/0Sk
6P84ouj/PKTo/zyk6P86o+j/N6Ho/zyi5/9eq+v/m8Xz/9fi+f/++v3//vv7/8zU+/+Qp/r/V374/zdo
+P83avj/Omz4/zxs+P88bPj/PGz4/zps+P83afj/PGv4/2aI+f+Oqfn/scL6/9nd+//j5fr/8fH9////
///19fP/5OPi/9PRz//Cv73/rqmn/5uUkv+YkY7/mpSR/5uVkv+blZL/m5WS/5uVkv+blZL/m5SR/5mT
kP+Wj43/n5mX/7q3tf/a2dn/9fj6///9/v//4tD//8OU//+oWv//nDr//548//+fPv//nz7//50////H
m//9+vr/+/7/2Pr6+kkAAAAAAAAAAAAAAAD9/f0e/f39rv/+/v/x9fv/hsLu/zKf5/86o+j/PKTo/zyk
6P88pOj/PKTo/zqj6P81ouf/RaXo/2ux7P+nyvP/5On6///+/f/49v3/wsz6/4Kd+f9Ldfj/Mmf4/zhr
+P88bPj/Omz4/zJn+P9Wfvn/l6z5/9DY+v/6+f3////9/////f////3///79//39/f/+/v7/////////
///5+fn/5ePj/8jFw/+oo6D/l5GO/5mTkP+blZL/m5WS/5uVkv+Zk5D/l5CO/5yWk/+xrqv/0dDQ//Hz
9v///////+zh///Mo///rWX//51B//+dOv//nz7//6A///+gP///nz///5w4//+1dv/+6d//+/////r7
+30AAAAAAAAAAAAAAAD9/f1M/v393P///v/R4/X/Z7Hq/zeh5/88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/OKPn/zSh5/9Kpun/erbu/7fS9v/u7/v///7+/+3u+/+wwPr/cpH5/0Rw+P8yZ/j/Omv4/2aI
+f+7yPr/+fj9/////f////3//v79//79/f/9/f34/f395v39/eX9/f32/f39//7+/v/+/v7///////r5
+v/b2tj/sa2q/5qUkf+Zk5D/mpSR/5iSj/+Yko//q6ak/8zJyf/q6+z//f/////x7P//07H//7Rz//+g
R///nDj//54+//+gP///oD///6A///+gP///oD///548//+jUv//1rj/+/////r9/qv6+vobAAAAAAAA
AAD9/f12//79///+/f+m0fP/QaPn/zqj6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zqj
6P83ouj/N6Hn/1Sp6v+Mve//xdf2//Pz+/////7/4uT9/6K0+v9ghPj/cZD5/8/W+v///v3////9//7+
/f/9/f32/f39v/39/Yv9/f1q/f39WP39/Vf9/f1o/f39iP39/bz9/f3z/f39///////+//7/5eTk/7Wx
sP+Yko//lo+L/6Wfnf/BwL3/4uLi//r+////+Pb//9i7//+6f///o0///5w3//+ePP//oD///6A///+g
P///oD///6A///+gP///oD///58+//+bOv//xZT//fn5//r+/9T6+/tFAAAAAPv9/Q79/f2b///+//H1
+/+Gwu//MqDn/zqj6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/OqPo/zei
6P8/o+f/X6vr/5nE8f/W4Pn/+vj9//v6/f/N1fr/09v6///++/////3//f39//39/df9/f17/f39L/39
/QIAAAAAAAAAAAAAAAAAAAAAAAAAAP39/Sv9/f10/f390f39/f/+/////////+Tj4v+7uLX/ure1/9ra
2f/2+v3///39///hzf//wZH//6ZU//+bN///njz//58///+gP///oD///6A///+gP///oD///6A///+g
P///oD///58+//+cOP//t3v//uri//r+//j6+/tqAAAAAP39/S/+/f2+///+/+Dq+P93uez/NKDn/zqj
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P86o+j/NaLn/0em
6P9rsOz/pMjz/+Lo+f/9+/v////9//7+/f/9/f3//f39yP39/U79/f0DAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/f39Rv39/cH9/f3//v7+//v7+//u7u7/8fPz////////6d3//8mg//+s
Y///nT7//508//+fPv//oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///58///+d
Ov//rGb//t/O//r////6+/uKAAAAAP39/Uv+/f3b///+/87h9v9ksOr/N6Hn/zyj6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zij5/8xoOf/TaXp/7DO
8//5+Pv///79//39/f/9/f3S/f39SgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP39/UH9/f3L/f39//7+/v////////Ps///TsP//sm///59E//+dOv//nz7//6A///+g
P///oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+ePP//oU3//tOz//r/
///6+/6o+vn6Gf39/WT+/v30///9/67V8/9Epef/OqPo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zqk6P81oef/W63p/8Pd9f////3//v39//39
/fD9/f1xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD9/f1n/f396/39/f/9/////ujg//+0df//mjL//588//+fP///oD///6A///+gP///oD///6A///+g
P///oD///6A///+gP///oD///6A///+gP///oD///6A///+fPv//mzr//sma//v7///7/f/A+vr7Mf39
/Xf//v3///79/5bM8f8xn+f/OqPo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zqj6P8yoOf/hcHu//Hz+/////7//f39//39/bL7+/shAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0Z/f39qP39
/f/9/v///vj4///Djf//mjT//58+//+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+g
P///oD///6A///+gP///oD///6A///+fPv//nDf//8GL//318//7/v/V+vv7Rv39/X///v7/+/n7/5LI
8f8yn+f/OqPo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zqj6P8/o+j/pNDx///+/f///v3//f39/P39/XYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39bP39/fb9/v7//f/////U
sv//ok3//54+//+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+g
P///oD///6A///+fPv//nDj//7yE//3u6//6/v/l+vv7Vv39/X///v7/+Pj7/47G7/80n+f/OqPo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zii
5/9Xquj/wtv1/////v/+/v3//f392/39/U0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39Q/39/dL9/f7//f////7i0///rmz//506//+f
P///oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+f
Pv//nDr//7h///3r5v/6/v/w+vv7Yf39/X///v3/8/X6/4rE7v80oOf/OqPo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKPo/zeh6P9osur/0uL1////
/v/+/f3//f39w/39/TUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/f39Kv39/bn9/f7//f////7o3v//tHj//5w6//+fPv//oD///6A///+g
P///oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+fPv//nDr//7V5//3o
4P/6///5+vv7av39/X///v3/7vP5/4XB7v80oOf/OqPo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/OqPo/zWh6P9xtev/2uf2/////v/+/f3//f39uP39
/SkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA/f39IP39/a/9/f7//f////7r5P//uH3//5w6//+fPv//oD///6A///+gP///oD///6A///+g
P///oD///6A///+gP///oD///6A///+gP///oD///6A///+fPv//nTr//7Jy//3k2v/6/v/++vv7b/39
/X///v3/8fP6/4bC7v80oOf/OqPo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/OqPo/zeh6P9vtOv/2eb2/////v/+/f3//f39vv39/S8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39Jf39
/bP9/f7//f////7q4v//t3v//5w6//+fPv//oD///6A///+gP///oD///6A///+gP///oD///6A///+g
P///oD///6A///+gP///oD///6A///+fPv//nTr//7N0//3l2//6/v/9+vv7bv39/X///v3/9fX6/4vE
7/80oOf/OqPo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKPo/zeh6P9nser/0eL1/////v/+/f3//f390f39/UIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+/v7OP39/cb9/f7//f////7o
3f//tXX//506//+fPv//oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+g
P///oD///6A///+fPv//nDr//7Z6//3p4f/6/v/4+vv7af39/X///v7/+fn7/4/G7/80n+f/OqPo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zii
5/9SqOn/u9n1/////f/+/v3//f398fv7+2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+/v7Wv39/en9/f7//f////7ey///q2L//506//+g
Pv//oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+f
Pv//nDj//7qA//3u6P/6/v/v+vv7YP39/X///v3//fr7/5LJ8f8yn+f/OqPo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zqj6P86oef/msvx//36
+//+/v3/+/v7//v7+5r+/v4NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD9/f0H/f39jv39/f/9/v7//f/////Rr///nkj//5w4//+fPv//oD///6A///+g
P///oD///6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+fPv//nDf//76H//3x
7//6/v/j+vv7VP39/XX//v3////9/6DP8/86oOj/OqPo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zei6P8sneb/gL/u/+/z+v///vv//fv9//v7
+937+/tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD9/f1G/f391P39/f/7/f3//f////7m1P//wpD//6la//+cOv//njz//58+//+gP///oD///6A///+g
P///oD///6A///+gP///oD///6A///+gP///oD///6A///+fPv//nDf//8OO//329v/7/f/T+vv7Rf39
/WH+/v3x///+/7nY9f9Qp+j/OKLn/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P86o+j/NKHn/0Wl6P9zuOz/u9r1//j5+/////3//v39//39/f/9/f2x/f39JQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/R/9/f2o/f39//39
/f/++/3///b1///5+v/++Pb//9zC//+8hf//o07//5w3//+ePP//oD///6A///+gP///oD///6A///+g
P///oD///6A///+gP///oD///6A///+fPv//nD7//syg//v9///7+/6++vr6MP39/Uj+/f3X///+/9Lj
9v9psur/N6Hn/zyj6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/OqPo/zeh
6P88oef/ZbLq/6fQ8f/l7Pn///39//P2/f/x+P3////9//39/f/9/f35/f39nv39/SMAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39HP39/ZT9/f31/f39///////s9e7/zeDD/+Pc
wf//7ub///7////z7v//07L//7V0//+gSP//nDj//54+//+gP///oD///6A///+gP///oD///6A///+g
P///oD///6A///+ePP//pFX//te9//r////6+/uk+vn6Fv39/Sv9/f26///9/+Xs+f98vO3/NKDn/zqj
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zqj6P83ouj/N6Do/1et6v+Vx+7/1OT1///9
+//7+v7/q+f+/1zW//+Y3///9vj9/////f/9/f3//f399/39/av9/f1E/f39BQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP39/QL9/f0+/f39pP39/fT9/f3///7///37+/+v4r3/YMl9/3TEef+4z5//89/K///x
6////v///uvi///MpP//rWX//50///+dOv//nz7//6A///+gP///oD///6A///+gP///oD///58///+d
Ov//sG3//uLU//r////6+/uHAAAAAP39/Qr9/f2Y//79//j4+v+Mxe//MZ/n/zqj6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88o+j/OKLn/zGf5/9Rqen/icLu/8Xe9f/9+fv///7+/83u//982f//IMn//wDC
//8dyf//pOP////7/f////3//f39//39/f/9/f3S/f39iv39/Vf9/f01/f39Iv39/SL9/f0z/f39U/39
/Yb9/f3O/f39//39/v////////3+/8Tozf9dy3//L8Fh/y/DY/9NxW//jcWC/8vRqP/65dX///X1//76
/f/+4dD//8SW//+pXP//nDr//548//+fPv//oD///6A///+gP///oD///58+//+cN///u4L//u/q//v+
//X6+/tmAAAAAAAAAAD9/f1y/v79/f///f+w1fP/SaXo/zii6P88pOj/PKTo/zyk6P88pOj/PKTo/zqi
6P80oOf/Sabo/3i67P+42PP/9vX5/////f/g8f7/j9///zzN//8Dw///AMT//wDF//8AxP//J83//6Lj
///2+P3////7///9/f/9/f3//f39//39/eX9/f3D/f39sf39/bH9/f3C/f394/39/f/9/f3//v3+////
///6+vn/vObH/1/Mgv81wWT/N8Nm/zjEZ/80xGb/N8Ro/17FdP+fyY3/3NW0///n2///+fr//vn6///d
xv//vof//6RQ//+bN///njz//6A///+gP///oD///58+//+eP///y6D//fv///v9/tD6+vtAAAAAAAAA
AAD9/f1I/v392P///v/c6Pb/crbr/zWh5/88o+j/PKTo/zyk6P86o+j/NaHn/z6i5/9qtOv/q9Lz/+nu
+P////3/7vX//5/j//9L0f//DMX//wDE//8Axf//AMb//wDG//8Axv//AMT//x3J//+P3f//5/P+///9
/f////3///79//79/f/+/f3//f39//39/f/9/f3//v3+///+//////////7//+jz6f+m3rb/VMl6/zDB
Yf84w2b/OsRn/zrEZ/86xGf/N8Rn/zTDZf8/xWz/bcR3/63Klf/p2sD//+zk///+///+8/H//9S1//+2
d///oUr//5w4//+fPv//oD///548//+qX//+3sj/+/////r7+6b6+foWAAAAAAAAAAD9/f0a/f39qf/+
/f/49vr/i8Xv/zCf5/86o+j/OqPo/zeh6P86oef/Xq/q/5rJ7//Z5vb///37//r6/v+s5///WdT//xfH
//8AxP//AMX//wDG//8Axv//AMb//wDG//8Axv//AMb//wDE//8Xx///VtP//6Xk///p8/7//vv9////
+/////3///79//39/f////////////77/f/p8+n/t+XE/3jSlP9IxXD/MsJj/zjEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/82xGb/McNk/0jGb/96w3r/us2e//PeyP//7uj///7///7u5f//zqn//69o//+d
P///nTr//5s0//+7gP/+7+r/+////fr7+3gAAAAAAAAAAAAAAAAAAAAA/f39df7+/fv///3/tNbz/0un
6f80oOf/MJ/n/1Gq6f+Ow+7/yuD2//75+v///f3/y+z+/3vY//8gyf//AMP//wDF//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axf//AMP//x/I//9c0///f9z//7Hm/v/H6f//4vP+////
///l8+j/tuTC/5Xcq/9905f/Tsh1/y/BYf83w2X/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OMRn/zbEZv8vw2T/T8Vw/5HEgv/Qz6b/++HQ///18////v///uXU///Fl///qV7//55J///N
p//9/f//+/7/0/r6+kQAAAAAAAAAAAAAAAAAAAAA/f39PP39/c3///7/6O75/3i77v9Bo+f/ebvs/7rZ
8//49fn////9/9vx/v+J3f//Os3//wPD//8AxP//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDF//8AxP//AMP//ybH//81yf//neT///////+x47//RcNs/zLB
Yv8xwmL/NcNl/zjEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/84xGf/NMRm/zrEav9ixHT/osaK/+DUsv//5tj///r7///5+v/+3Mb//82r//7o2//9/////f3+mvn4
9g4AAAAAAAAAAAAAAAAAAAAA/f39CP39/Y7//f3///v9/8De9v+o0fH/6u/5/////f/s9f//neP//0jQ
//8JxP//AMT//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMX//wDE//8Awv//e+D///////+b4LH/LMBe/zfDZf84xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zjE
Z/8yw2X/QcVu/3HEdv+wypP/7Ni9///q4P//+v3//fr7//36+v/9/f7p/f39XAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP39/Un9/f3a//79//v6+///+/3/8/n+/6jm//9X1P//F8f//wDE//8Axf//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/N8Nm/zDD
ZP9JxnD/gcJ7/77KmP/v5tf//vr6//3+///9/f2p/f39GwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPv7
+wz9/v6S/f39///++//s9f3/jNz//xfI//8Aw///AMX//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF
//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zjEZ/81w2b/McNk/2bH
ev/Q4MP///r7//7+/ur9/f1fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f1B+/v70v/9
+//u9f3/etj//wbE//8Axf//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH/////
//+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/84w2b/NMFi/3jTlP/i8+b///////39
/qL9/f0YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4F+/v7fP79/fj///3/2O/+/0nQ
//8Aw///AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjD
Zv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zjEZ/8ywmL/W8p9/8Xoz////v////3+2fv9/UoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39Jv39/bP//v3///39/6jl/v8fyf//AMT//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zTCZP9HxG7/qN+3//v6+v///v/4/f39gPv9+wcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/U79/f3a///9//X5/f+U3v//Gcf//wDE//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/N8Nl/0HD
a/+Q1qP/6vPr///////+/f6v+/37JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP39/Qf9/f10/f397////f/v9f3/h9r//xXG//8AxP//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF
//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/83w2b/PsNo/4PUmv/i8eX///7///79
/tD7/ftDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD9/f0W/f39kv79/fv///3/6fP9/33X//8Pxf//AMT//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH/////
//+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zfDZv83wmT/ddCQ/9rv3/////////7/4v39+1/4/f4BAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39JP39
/aj+/f3///79/+Pz/f991///E8b//wDE//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjD
Zv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/NcNl/z7CaP920JD/0e7Z///+/////v/s/f39dfv9+wsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/S39/f2w/v39///+
/f/o8/3/i9v//xzI//8AxP//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zjEZ/80wmT/RMRt/4fV
nP/b8d////7////9//D9/f2C+/37EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0w/f39sP79/f////3/8/b9/5vg
//8hyv//AMP//wDF//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OMNm/zHBYf9KxnP/mdmr/+bz6P////////7/7f39
/YL7/fsWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39Lf39/aX+/f35///9//n5/v+r5v//TND//w/F
//8AxP//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF
//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zjEZ/80wmX/PMJm/2bNhf+x4r//8fbx///+///+/f7k/f39d/v9+xIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/SH9/f2M/f397P/+/f///f3/3u/+/4nb//8hyv//AMP//wDF
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH/////
//+d4LL/L8Fg/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/84xGf/NcNl/y/C
Yf9LxnP/jtei/9Tu2f///f3///////79/dL7/f1i+/37CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD9/f0S/f39a/39/dP//v3////9//j4/f+t5///Ydb//x3J//8Aw///AMX//wDF
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjD
Zv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OMNm/zXDZf8wwWH/SsVx/3vTlf+05ML/7/Xx////
/////v/6/f39tPv9/Ub+/f0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA/f39A/39/UT9/f2o/f398//+/f///v3/8fX+/6jm/v9g1v//LMn//wDD//8AxP//AMX//wDF
//8Axv//AMb//wDG//8Axv//AMb//wDF//8Aw///fuH///////+d4LL/L8Fg/zjDZv86xGf/OsRn/zrE
Z/84xGf/OMNn/zfDZv80wmP/L8Ff/0rFcf970pX/seK//+jz6f///v////7///79/t79/f2G+/39KAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD9/f0d/f39cP39/cX+/f39//79///+/f/v9f7/uOf+/33c//9W0v//Gsj//wDD//8AxP//AMT//wDF
//8Axf//AMX//wDF//8Aw///fuH///////+d4LL/L8Bf/zfDZf83w2b/N8Nl/zTCY/8ywmL/L8Fg/0PD
a/9szYn/itmk/7Pjwv/o8+n///3//////////v7w/f39qf39/VD7/fsLAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39
/TP9/f2D/f39y/79/f3//v3////7//v6/f/j8f7/pOX//2zb//9f1P//S87//yvI//8DxP//AMP//wDD
//8Awf//eeD///////+Z36//J79a/y/AX/80wWH/S8Vx/2rNhv980pX/itij/6rhuv/X7tz/+Pn4///+
//////////7+8P39/bL9/f1o/f39HgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0F/f39Ov39
/Xz9/f25/v397//+/f///v3///79//v5/f/q8/7/1u7+/7fm/v+Q4v//dN7//2za//9m2f//tuv+////
///F69D/htef/5Lcq/+f4LT/t+XD/9Xs2P/m8ef/9vn2///+//////////7////+/t/9/f2l/f39Zf39
/SIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0p/f39Yf39
/ZP9/f3B//396//9/f///v3////9/////f////3///39//n5/f/4+f3/+vv9///+/v/5+vn/9fj1///9
/v/////////////+/////v////7//v/+/t3+/f2z/f39hP39/U/9/f0XAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/Qj9/f0x/f39W/39
/X/9/f2g/v39vf79/dX//f3p//79+P/+/f///v3//v39//39/f/+/f7///7////+//T//f7j/v3+zv79
/rT+/f6V/f39cv39/U79/f0jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0S/f39Lv39
/Ub9/f1Z/f39aP39/XP9/f17/f39f/39/X79/f15/f39cP39/WT9/f1T/f39Pv39/SX7/fsIAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+AAD////wAAAP//
/wAAAP///wAAAP//+AAAAD///wAAAP//4AAAAA///wAAAP//gAAAAAP//wAAAP//AAAAAAD//wAAAP/8
AAAAAAB//wAAAP/4AAAAAAAf/wAAAP/wAAAAAAAP/wAAAP/gAAAAAAAH/wAAAP/AAAAAAAAD/wAAAP+A
AAAAAAAB/wAAAP8AAAAAAAAA/wAAAP4AAAAAAAAAfwAAAPwAAAAAAAAAfwAAAPwAAAAAAAAAPwAAAPgA
AAAAAAAAHwAAAPAAAAAAAAAAHwAAAPAAAAAAAAAADwAAAOAAAAAAAAAADwAAAOAAAAAAAAAABwAAAMAA
AAAAAAAABwAAAMAAAAAAAAAAAwAAAMAAAAAAAAAAAwAAAIAAAAAAAAAAAwAAAIAAAAAAAAAAAQAAAIAA
AAAAAAAAAQAAAAAAAAA+AAAAAQAAAAAAAAD/gAAAAQAAAAAAAAP/wAAAAAAAAAAAAAf/4AAAAAAAAAAA
AAf/4AAAAAAAAAAAAA//8AAAAAAAAAAAAA//8AAAAAAAAAAAAA//8AAAAAAAAAAAAA//8AAAAAAAAAAA
AA//8AAAAAAAAAAAAA//8AAAAAAAAAAAAA//8AAAAAAAAAAAAAf/4AAAAAAAAAAAAAf/4AAAAAAAAAAA
AAP/wAAAAAAAAAAAAAH/gAAAAAAAAAAAAAB+AAAAAQAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAQAAAIAA
AAAAAAAAAQAAAIAAAAAAAAAAAwAAAMAAAAAAAAAAAwAAAMAAAAAAAAAAAwAAAMAAAAAAAAAABwAAAOAA
AAAAAAAABwAAAOAAAAAAAAAADwAAAPAAAAAAAAAADwAAAPAAAAAAAAAAHwAAAPgAAAAAAAAAHwAAAPwA
AAAAAAAAPwAAAPwAAAAAAAAAfwAAAP4AAAAAAAAAfwAAAP8AAAAAAAAA/wAAAP+AAAAAAAAB/wAAAP/A
AAAAAAAD/wAAAP/gAAAAAAAH/wAAAP/wAAAAAAAP/wAAAP/4AAAAAAAf/wAAAP/8AAAAAAB//wAAAP//
AAAAAAD//wAAAP//wAAAAAP//wAAAP//4AAAAA///wAAAP///AAAAD///wAAAP///wAAAf///wAAAP//
//AAD////wAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx9T7C8PR
+x7T3fs7/f39ZP39/Yv+/f2h/v39qf39/ar9/f2q/f39qf39/Z39/f2E/Pz8Wejn5jTd29oa3dzbBwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALzM
+g/h5/w+/f39gv7+/bv+/v3d/v796/39/Pj19vv+6+z7//Hy/P/8+/v/8/Hx//f39v38/Pz1/v7+5/7+
/tn9/f2u/f39c+3s6zHX1dQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK7B
+gHY4fsh/Pz9Y/39/b/9/fzv8fP8/93j+/+7x/r/mK74/3GU+P9rjvj/XoT4/5Os+f/w7+//tbCu/6+r
p/+0sK3/wsC+/9PR0P/p6Oj/9fT0//38/eX+/v6w8fDwTd3a2hYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAvcz6COHn/EL9/f21/v796vDy+//G0fr/j6b5/1+E9/9Kdvj/QW/3/zdp+P84avj/NWf3/3eZ
+P/u7Ov/pqGd/5iSj/+Yko//mpWS/5+Zl/+no6D/vbq4/9vZ2P/z8vL9/v7+4P39/Z/s7Osv2NbUBAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALfI+gPr7/wi/f39m/7+/ezq7fv/ucb5/2yN+P9DcPj/Nmn4/zpr+P87bPj/PGz4/zxs
+P88bPj/N2n4/3ia+f/u7ez/qKKf/5qUkf+blZL/mpSR/5qUkf+ak5D/mJKP/5uVkv+sqKX/0tDO//Du
7v/9/v7d/f39f9vZ2RMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOvv/Dn9/f2t/Pz8993j+v+Cnfn/THf4/zpr+P86a/j/O2z4/zxs
+P88bPj/PGz4/zxs+P88bPj/N2n4/3ia+f/u7ez/qKKf/5qUkf+blZL/m5WS/5uVkv+blZL/mpWS/5qU
kf+Zk5D/n5qW/7axr//n5uX//Pv78f39/Y/x8PAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2x/oG6u/8SP7+/dz3+Pz+rLz5/1qB+P82aff/O2v4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/N2n4/3ia+f/u7ez/qKKf/5qUkf+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/mpSR/5iSj/+knpz/ycbE//j39/r+/v3D8fDvLtHPzgMAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADr7/xJ/f39y/X2/P+xwPr/TXf4/zpr
+P87bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/N2n4/3ia+f/u7ez/qKKf/5qU
kf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5qUkf+Zk5D/nZeV/8vIxv/09PP8/f39sPDw
7y4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyNX6A+7x/Dr+/f3d9vf8/5Wr
+f9Fcfj/Omv4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/N2n4/3ia
+f/u7ez/qKKf/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mpSR/5qV
kv+7t7b/9fT1/P7+/sDs6+sfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8PP8JP39
/bD3+Pz/t8T6/0h0+P86a/j/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/N2n4/3ia+f/u7ez/qKKf/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5qUkP+alZL/zMnI//f4+Pr4+PeJ3trYEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADS4fkK/f39n/z8/PixwPr/UHj4/zlr+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/N2n4/3ia+f/u7ez/qKKf/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+alJH/nZeV/8nHxv/7+/zv/f39d+ff2AIAAAAAAAAAAAAA
AAAAAAAAAAAAANHl+AL2+fxH/f397vT0+/91k/j/N2n4/ztr+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/N2n4/3ia+f/u7ez/qKKf/5qUkf+blZL/m5WS/5uV
kv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mZOQ/6SenP/m5uX+/f391/Xv
6ScAAAAAAAAAAAAAAAAAAAAAAAAAAOHt+SX9/f26+Pr8/+7y+//U2vr/lav5/055+P85a/j/O2v4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/N2n4/3ia+f/u7ez/qKKf/5qU
kf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5qUkf+Zk5D/nZeU/62o
pv/l5eX//P38//v7+5Lz4dASAAAAAAAAAAAAAAAAAAAAAP39/Wr+/v3sy+D0/5DD7//S4vf/7fD7/7/M
+/9zlPj/P274/zlq+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/N2n3/3ia
+P/u7ez/p6Ke/5qUkf+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/mpSR/5mT
kP+jnZv/ycfG/+rq6//76t7//ujY//z9/tn68+xCAAAAAAAAAAAAAAAA5vL6FP39/cX29/v/drrs/zah
5/9Pqen/hr/v/9jl+P/u7/z/tsX6/3GR+P9Abvj/Omv4/zts+P88bPj/PGz4/zxs+P88bPj/O2v4/zlq
9/88bPf/RnL3/4Sh+f/v7u3/rKek/5mTkP+Zko//mpSR/5qVkv+blZL/m5WS/5uVkv+blZL/mpSR/5qU
kf+ak5D/op2a/8XCwf/o5+f//u3g///Mo///p1f//7Jw//318fv8/f2h99m+BAAAAAAAAAAA5PH6Rf7+
/fTR5ff/Safo/zmi5/85o+f/PqPo/2Sw6/+mzPP/6e37/+Xn+/+WrPr/WYD4/zhp+P86a/j/PGz4/zxs
+P86a/j/Omr4/16E+P+DoPj/uMT6/9Tb+//4+Pf/2djW/7y5tv+qpaP/mZOQ/5mTkP+blZL/m5WS/5uV
kv+blJH/mJKP/5uUkv+2s7H/2tra//fw7f/+3MP//7Nu//+iR///nTv//6BG//3exv/7/f3Y+eveJAAA
AADM5fcP/f39jfb5/P+fzfD/NqDn/zuj6P88pOj/PKTo/zmj5/89o+f/aLHs/63P8//r8Pv/4OT7/5Kq
+f9Tffj/Omv4/zlr+P9Ufvj/orX6/+ns+//9/f3//v79/v79/fj9/f34/v7+/v39/f/y8fH/zsvJ/6ij
oP+Zk5D/mpSR/5mTkP+clZP/tLCu/9bV1f/48e7//+HJ//+2dP//oEf//548//+fPv//nz///507//7A
jP/89fD/+vDmYPvSqwPH4/Yi/v39xObx+v9vt+v/OqLn/zyk6P88pOj/PKTo/zyk6P87o+f/OaLn/0im
6f+Hvu//ydz2/+zu+//K0/z/cpH4/1qA+P/AzPr/9vf8//7+/f39/f3g/f39qf39/Y39/f2M/f39p/39
/d79/f38+fn5/93c2/+loJ7/l5GN/6ain//GxML/7+7u//zp3P//w5L//6lX//+ePv//nz7//6A///+g
P///oD///589//+sYf/96tz/+vz9lvvauhL8/f1I/v794cfg9v9Mqun/OqPo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zuj6P86ouf/Sqbo/4/B8P/P4Pj/6+37/+Dl+v/+/vz//f398vT2/Izk6vowAAAAAAAA
AAAAAAAAAAAAAO3t8Sz3+PiG/f398f7+/v/h4N7/zMrJ/+zr6f/97uT//8aY//+pWf//nTr//58+//+g
P///oD///6A///+gP///oD///58+//+kTP/+1bj/+v39zfzXsyb9/f1x/v7977DT8v9Hpuj/O6Po/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P87o+j/OqPn/z+k5/9drOv/0+L3//38/P/9/f31/f39mMPT
+REAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADf3eAP/f39kf39/fP7+/v/+vXy///XuP//tHP//6BE//+e
Pv//nz7//6A///+gP///oD///6A///+gP///oD///58///+gRP/+xpn/+v3+3vrt4j/9/f2Z/v79/IPC
7v87o+f/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zii5/9Xren/4e35//79
/f/8/PyvzNz5HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6+XhGf39/af9/f3//fPv//+u
ZP//nTn//58///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+dPP/+uHb/+/r87Pr7
/Gf9/f2n/fv8/3K77f83oef/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zqi
5/96ve3/+/v8//39/f3t8/tfxNv3AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7uPaAvn1
8lj9/f37/f39//++hf//nkD//6A///+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+e
O///smz//PTz9Pr8/ID9/f2p+fn7/2+47P84oef/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKPo/0Sl5/+jzfD//v79//39/eHm8fouAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAPrz7if9/f3b/f7+//7StP//o0z//58+//+gP///oD///6A///+gP///oD///6A///+g
P///oD///6A///+ePP//rmb//PDt+/r8/JP9/f2p9Pf6/2u26/84ouf/PKTo/zyk6P88pOj/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/O6Po/0in6P+01PL//v79//39/dLm8foeAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz17hf9/f3L/f7+//7Yv///pE///58+//+gP///oD///6A///+g
P///oD///6A///+gP///oD///6A///+ePP//q2D//O3n/vr8/J39/f2p9vf7/2u36/84ouf/PKTo/zyk
6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/O6Po/0in6P+z1PL//v79//39/dfm8vojAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPr07Rz9/f3Q/f7+//7Yvf//pU///58+//+g
P///oD///6A///+gP///oD///6A///+gP///oD///6A///+ePP//rGL//O7o/fr8/Jz9/f2p+vn7/2+4
7P84oef/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKPo/0Kk6P+fy/H//v79//39
/e7l8vo7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbz6zT9/f3o/f7+//7Q
rv//okn//58+//+gP///oD///6A///+gP///oD///6A///+gP///oD///6A///+ePP//r2b//PLu+vr8
/JL9/f2n/vz8/3a87v84oef/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zeh
5/9yuez/+vn7//z8+//7+/uB0O36CwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4uzYCfb3
8Xf8/f3//P7+//7InP//o0z//549//+fPv//oD///6A///+gP///oD///6A///+gP///oD///6A///+e
O///s23//Pb18/r7/H79/f2X/v79+47E8P8+o+f/PKTo/zyk6P88pOj/PKTo/zyk6P88pOj/PKTo/zyk
6P87o+j/OKLn/0mn6P+Oxe//+Pn7//79/P/8/PzS7Pf8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA9fnzOv39/c39/P3//fn5//7u5P/+1LD//6xg//+ePv//nz3//6A///+gP///oD///6A///+g
P///oD///6A///+ePf/+unr/+/v86/r6+2b9/f1u/v797rXV8/9Jp+j/O6Po/zyk6P88pOj/PKTo/zyk
6P88pOj/O6Po/zmi6P9Jp+j/ebvs/9Hk9v/m9Pz/xuz9/+74/f/9/f39/f390Oz4/D277PkIAAAAAAAA
AAAAAAAAAAAAAMnt3Qfw+fQ3/f39yv39/fzx+PP/uN+8/8vZtf/07uP//+zh//7Pqf//qlz//59B//+f
Pf//nz7//6A///+gP///oD///58///+hRv/+yaL/+v393frt4j39/f1E/v394M7j9f9Oqun/OqPo/zyk
6P88pOj/PKTo/zyj6P86ouf/OqLn/2Gx6v+z1vP/6fH5/8vu/v9r2P7/K8v//5bh/v/+/f3//f39/f39
/c3q+Pt04/b5MuT29xrl9vQa5vbyMO349HD9/f3K/f39/P79/v+35cT/Ush4/1TFcf+ay5H/5uHK//3w
6v/+4c7//r+K//+iSf//njz//58+//+gP///oD///58+//+lTv/+2cD/+v39y/zXtSXH4/Yh/f39wenz
+v95uuz/OKLn/zyj6P87o+j/OqPn/z6j5/9dsOr/rtPy/+fv+f/O8P3/fNv+/xvH//8AxP//AMX//xHI
//+V4f7/6/f8//79/f/9/f3//f395v39/c/9/f3O/f395f39/f/+/f7/7vfw/7Djv/9GxnD/N8Jl/zfE
Zv82xGf/X8V1/6TMlf/q48///PLu//7fyf/+vYT//6JI//+ePv//nz7//589//6xav/97uP/+vv8kvra
uhDL5fcN/f39iPn6+/+m0PH/NKDn/zqj6P85oef/SKfo/47E7v/T5vb/5fP8/5/k/v81zf//C8b//wDF
//8Axf//AMb//wDF//8byP//btj+/9Lv/v/5+v3//v78//79/f/9/f3//v7+//n6+f/a8N//i9ei/0vH
dP82w2X/OcNm/zrEZ/85xGf/OMNm/0HDaf97yIL/wNOp//nr3//+7+f//tGu//+waP//nT3//5w4//7G
mP/89/T++PDmXPjTqwIAAAAA5PH6Qf7+/fLY6ff/Tqnp/0Ol6P+Iwu7/zeL2/+n1/P+v5/7/Ps3//wfF
//8Axf//AMb//wDG//8Axv//AMb//wDG//8Axf//AMT//yLJ//9M0f//idz+/7no/v/w+fL/pt+3/27R
jv9PyHb/NMJj/znDZv86xGf/OsRn/zrEZ/86xGf/OsRn/znEZ/81w2X/P8Rq/4bGg//M06z/+O7k//7v
5v/+zKX//rFx//7jz//8/f7V9+zdIQAAAAAAAAAA5vL6EP39/cH5+fz/nMzx/6/U8v/q8/r/zu/9/2HW
/v8eyP//AMX//wDF//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF//8AxP//DsT//1/X
///g9eb/Wct+/zXCZP83w2b/OcRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/85xGf/OMRm/zvD
aP9WxHL/p8yU/+XexP/+7+n//uzj//339Pr9/f2b79y9AwAAAAAAAAAAAAAAAPz8/GP9/f3q+/r7/97y
/f9j1///Hcn//wDE//8Axf//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMT//1TX///e9OX/U8t7/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/84w2b/N8Nn/1rDcf+30qT/9fLs//39/tX29ew8AAAAAAAAAAAAAAAAAAAAAN3w
+iH8/Py0+fr7/6Ti/v8Hxf//AMX//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMT//1TX///e9OX/U8t7/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OMNm/zTCY/+V2KX/8/fx//39/Yvn5s8PAAAAAAAA
AAAAAAAAAAAAALzk+AHk8/pA/v396+33/f9J0f7/A8X//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMT//1TX///e9OX/U8t7/zjDZv86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/N8Nm/2DMgv/k8+j+/v3+0d/t
2iIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI7PsI/f39l/7+/fa26f3/L8v//wDF//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMT//1TX///e9OX/U8t7/zjD
Zv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/84w2b/UMd2/7Xi
wf/9/f3s/P38bsLjwQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxu78H/39/ab7/P3+wen9/ybJ
//8Bxf//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMT//1TX
///e9OX/U8t7/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zjD
Zv9HxXD/ueXF//j7+fjy+fSAu+fHDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAren9Auf3
/TL9/f3X+fv9/57h/v8lyf//AMX//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMT//1TX///e9OX/U8t7/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/N8Nm/0jFcP+X26v/9vr3+v79/rfd8+MaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADk9/1A/f39xPn7/f/D6v3/Msz//wPF//8Axf//AMb//wDG//8Axv//AMb//wDG
//8Axv//AMb//wDG//8Axv//AMT//1TX///e9OX/U8t7/zjDZv86xGf/OsRn/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/znDZv83w2b/VMh5/7zmxv/3+/f7/f39pub26ycAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACe5v0F5Pf9QP39/dX8/P39uur+/0vR//8GxP//AMX//wDG
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMT//1TX///e9OX/U8t7/zjDZv86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/N8Nm/znCZf9nzof/vOXI//n7+fn9/f245vbrJ6jjuwIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOT3/S/9/f2h/v399fD3
/f+O3/7/MMz//wbF//8Axf//AMX//wDG//8Axv//AMb//wDG//8Axv//AMT//1TX///e9OX/U8t7/zjD
Zv86xGf/OsRn/zrEZ/86xGf/OcNm/zfDZf85w2f/VMp7/5jbrP/r9u3+/v7+7fH59ILb8+MaAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKDn
/QKy6/0b/f39jv39/eb0+v3/zO7+/2bY/v8oyv//AMT//wDF//8Axf//AMb//wDG//8Axv//AMT//1TX
///e9OX/U8t7/zjDZv86xGf/OcRn/zjDZ/83w2X/M8Ji/03HdP9/1Jn/z+zW//P59f/+/f7U/P39c7Hm
wg8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAqen9Btf0/Tj9/f2p/v395fv7/f7b8v3/m+L+/1zV/v8iyv//G8j//wnF
//8AxP//AMP//1LW///d9OX/Ucp5/zTCY/87w2f/R8Zw/0zIdf9z0I//pN+2/9jv3//5+/n7/v7+2f39
/ZLc8+MmtOfEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
+P88bPj/PGz4/zxs+P86a/j/Yon4/9bU0v+emJX/m5WS/5uVkv+blZL/m5WS/5uVkv+blZL/m5WS/5qU
kf+loJ7/2dfX/PPy8YPd0MURAAAAAAAAAAAAAAAAAAAAAPD1+2j4+PvvcJD4/zxs+P88bPj/PGz4/zxs
+P88bPj/PGz4/zxs+P88bPj/PGz4/zpr+P9iifj/1tTS/56Ylf+blZL/m5WS/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5qUkf+po6H/8vLy4/Hq404AAAAAAAAAAAAAAADR5fgo9vn73Nfn9//I0/n/iKP5/0d0
+P87a/j/PGz4/zxs+P88bPj/PGz4/zxs+P88bPj/Omv3/2KJ+P/W1NL/npiV/5uVkv+blZL/m5WS/5uV
kv+blZL/m5WS/5qUkf+alJH/oZuZ/7q2tP/x6+f/+/n4xvHbxhYAAAAArtX0BO30+3PW6Pf6aLXr/4nC
7//C2Pf/ssP6/26Q+P89bPj/O2v4/zxs+P88bPj/O2v4/zpq9/89bff/a474/9fV0/+fmZb/mZOQ/5qU
kf+blZL/m5WS/5qUkf+alJH/nJWS/66qqP/a1ND/9NnE//6/iP/95tT09ebXVwAAAADA3vYi9vn8xJbK
8P88o+f/O6Pn/02o6f+Wx/H/y933/6O3+f9mivj/QG/4/ztr+P9Ld/j/fJr4/7fH+v7b4fv98vLx/djW
1P66trT/opyZ/5qUkf+alJH/nZaU/6qlo//Uzsr/89zJ//6+hf//pEz//54+//3Cjf/69fCr886rE9rs
+E3x9vvlZ7Tq/zqi5/88pOj/O6Pn/0Ck5/9er+v/tdT0/87Z+f+Mpfn/VHz4/7DB+v/t8Pz+/f393v39
/bf9/f22/f393PTz8/3V09L/npiV/56Zlv/DwL//6N/Z//3Kn///rV///59A//+fPv//nz7//qte//vx
6Nb43cM0/P39hdTn9/ZFpuj/O6Po/zyk6P88pOj/PKTo/zuj6P89o+f/ZLHr/7zX9f/n6/r//f387uzw
+4i7zPAVAAAAAAAAAADP0uAT8/P0hP39/e3k4+L/6uDY//7PqP//rF7//548//+fPv//oD///6A///+f
Pv//oUX//N/I8Pro1mX9/f2vttnz/D2j5/87o+j/PKTo/zyk6P88pOj/PKTo/zuj5/86o+f/hMDu//L2
+//x9fubts31GgAAAAAAAAAAAAAAAAAAAADb1tcZ+ff2lfz5+P/+zqX//6JI//+fP///nz7//6A///+g
P///oD///58///+ePv/80ar3+vf2iPz8/MSfz/H/OKLn/zyk6P88pOj/PKTo/zyk6P88pOj/PKPo/zyj
5/+u1fL//Pz8987h9zUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADu5d8w/f399f7Xt///n0L//58+//+g
P///oD///6A///+gP///oD///548//7Gl/z6+Pir+vv8xZrM8P85ouf/PKTo/zyk6P88pOj/PKTo/zyk
6P87o+j/QqXn/8jg9f/9/f3kz+T3FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLp3hL9/f3f/ePR//+i
SP//nz7//6A///+gP///oD///6A///+gP///nj3//sKP/vr39br7+/zFmszw/zmi5/88pOj/PKTo/zyk
6P88pOj/PKTo/zuj6P9Cpej/x+D1//39/enO6PgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+vdGP39
/eX94s///6JI//+fPv//oD///6A///+gP///oD///6A///+ePf/+w5D++vf2ufz8/MSh0PL/OaLn/zyk
6P88pOj/PKTo/zyk6P88pOj/PKPo/zui5/+p0vL//Pv7++Hx+Uik3PQCAAAAAAAAAAAAAAAAAAAAAM/g
xwLt8ORC/P39+f3bwP//oUb//58+//+gP///oD///6A///+gP///oD///548//7ImPv6+fiq/f39rbzb
9fw/pOf/O6Po/zyk6P88pOj/O6Po/zuj6P9Epuj/aLXr/7/f9v/y+fz/+Pv8ur/p9zKa3+8BAAAAAAAA
AACs4M0B1+zbL/v8+rby9/L/6urZ//zTr//+tG///6FE//+fPv//nz7//6A///+fP///nz///NOu9vr3
9Yf9/f2C2Oj39kan6P87o+j/PKTo/zyj6P86ouf/S6jo/6HO8f/J5vn/gt39/5fi/f/9/f34+fv8uNPx
+EDJ7vEWze/rFtLv5T76/Pu0/f39963ivP95zYr/ytu4//jk0//+xZX//qdT//+ePf//nz7//58+//+i
R//84c3v+ujXY9ns+Evz9/vkbLbr/zmi5/87o+f/UKro/5jL8P/K5vj/hN79/yjK/v8AxP//B8b//4jf
/f/g9P3//Pz8+f39/OT9/f3j/Pz8+eX06f+j37b/PcRq/zfDZv9AxGr/csd+/9DewP/15NL//sSR//6o
Vv//njz//q9k//vz7NT03sIyveD2IPf6+8GczfD/QaTo/36+7f+83fX/o+L8/03S/v8Nx///AcX//wDF
//8Axf//Esf+/0rS/v+T4f7/xez9/+T06P+p4rv/btGO/0XFb/85w2b/OcNm/znDZv86w2f/VsZ0/5bP
lv/m38X//N3D//62dv/+yZ3/+vbxqOjSpxKq2fQD6/X7b+Xw+fq93fX/r+f8/1zW/v8Nxv//AMX//wDG
//8Axv//AMb//wDG//8Axv//AMX//wPE//9A0P//sebC/0HFbP84w2b/OcRn/zrEZ/86xGf/OsRn/zrE
Z/85xGb/OsNn/13Fdf+l0Zz/7ejY//z18fPu6tVSAAAAAAAAAADM6fgk+/v72c3t/P8cyf//A8X//wDF
//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMX//zjQ//+v5sH/QcVt/zrEZ/86xGf/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OMNm/z3CZ/+84L3/+fr4wuPhxBQAAAAAAAAAAAAAAADm9Ptj9vr97U7T
/v8Fxv//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDG//8Axf//OND//6/mwf9BxW3/OsRn/zrE
Z/86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/87w2j/aM6I//L48+Df7dlKAAAAAAAAAAAAAAAAAAAAALXm
+hnx+fyYyO79/kHP/v8Axf//AMb//wDG//8Axv//AMb//wDG//8Axv//AMb//wDF//840P//r+bB/0HF
bf86xGf/OsRn/zrEZ/86xGf/OsRn/zrEZ/86xGf/OcNm/17Lgf/I6tL76fbsfLvetw8AAAAAAAAAAAAA
AAAAAAAAAAAAAK/o/Bb2+/280e/9+EHP/v8Gxv//AMX//wDG//8Axv//AMb//wDG//8Axv//AMX//zjQ
//+v5sH/QcVt/zrEZ/86xGf/OsRn/zrEZ/86xGf/OcNm/zvEaP9fzIH/zOzV8/b6+KS25MALAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALTr/TT2+/27yu79/lDT/v8CxP//AMX//wDG//8Axv//AMb//wDG
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
</value>
</data>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>639, 17</value> <value>639, 17</value>
</metadata> </metadata>

View File

@ -235,6 +235,7 @@ namespace Sunny.UI.Demo
// uiLabel1 // uiLabel1
// //
this.uiLabel1.Font = new System.Drawing.Font("宋体", 12F); this.uiLabel1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel1.Location = new System.Drawing.Point(30, 288); this.uiLabel1.Location = new System.Drawing.Point(30, 288);
this.uiLabel1.Name = "uiLabel1"; this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(698, 23); this.uiLabel1.Size = new System.Drawing.Size(698, 23);
@ -263,6 +264,7 @@ namespace Sunny.UI.Demo
// uiLabel2 // uiLabel2
// //
this.uiLabel2.Font = new System.Drawing.Font("宋体", 12F); this.uiLabel2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel2.Location = new System.Drawing.Point(176, 383); this.uiLabel2.Location = new System.Drawing.Point(176, 383);
this.uiLabel2.Name = "uiLabel2"; this.uiLabel2.Name = "uiLabel2";
this.uiLabel2.Size = new System.Drawing.Size(172, 23); this.uiLabel2.Size = new System.Drawing.Size(172, 23);
@ -272,7 +274,9 @@ namespace Sunny.UI.Demo
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(30, 430); this.uiLine1.Location = new System.Drawing.Point(30, 430);
this.uiLine1.MinimumSize = new System.Drawing.Size(1, 1); this.uiLine1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -283,7 +287,9 @@ namespace Sunny.UI.Demo
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(30, 55); this.uiLine2.Location = new System.Drawing.Point(30, 55);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
@ -298,12 +304,15 @@ namespace Sunny.UI.Demo
this.cbFont.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList; this.cbFont.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList;
this.cbFont.FillColor = System.Drawing.Color.White; this.cbFont.FillColor = System.Drawing.Color.White;
this.cbFont.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.cbFont.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cbFont.ItemHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.cbFont.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.cbFont.Location = new System.Drawing.Point(101, 473); this.cbFont.Location = new System.Drawing.Point(101, 473);
this.cbFont.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.cbFont.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.cbFont.MinimumSize = new System.Drawing.Size(63, 0); this.cbFont.MinimumSize = new System.Drawing.Size(63, 0);
this.cbFont.Name = "cbFont"; this.cbFont.Name = "cbFont";
this.cbFont.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.cbFont.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.cbFont.Size = new System.Drawing.Size(469, 29); this.cbFont.Size = new System.Drawing.Size(469, 29);
this.cbFont.SymbolSize = 24;
this.cbFont.TabIndex = 79; this.cbFont.TabIndex = 79;
this.cbFont.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.cbFont.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.cbFont.Watermark = ""; this.cbFont.Watermark = "";
@ -311,6 +320,7 @@ namespace Sunny.UI.Demo
// uiLabel3 // uiLabel3
// //
this.uiLabel3.Font = new System.Drawing.Font("宋体", 12F); this.uiLabel3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLabel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel3.Location = new System.Drawing.Point(30, 524); this.uiLabel3.Location = new System.Drawing.Point(30, 524);
this.uiLabel3.Name = "uiLabel3"; this.uiLabel3.Name = "uiLabel3";
this.uiLabel3.Size = new System.Drawing.Size(172, 23); this.uiLabel3.Size = new System.Drawing.Size(172, 23);
@ -321,6 +331,7 @@ namespace Sunny.UI.Demo
// uiLabel4 // uiLabel4
// //
this.uiLabel4.Font = new System.Drawing.Font("宋体", 12F); this.uiLabel4.Font = new System.Drawing.Font("宋体", 12F);
this.uiLabel4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel4.Location = new System.Drawing.Point(30, 476); this.uiLabel4.Location = new System.Drawing.Point(30, 476);
this.uiLabel4.Name = "uiLabel4"; this.uiLabel4.Name = "uiLabel4";
this.uiLabel4.Size = new System.Drawing.Size(85, 23); this.uiLabel4.Size = new System.Drawing.Size(85, 23);
@ -359,6 +370,7 @@ namespace Sunny.UI.Demo
// uiLabel5 // uiLabel5
// //
this.uiLabel5.Font = new System.Drawing.Font("宋体", 12F); this.uiLabel5.Font = new System.Drawing.Font("宋体", 12F);
this.uiLabel5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel5.Location = new System.Drawing.Point(511, 524); this.uiLabel5.Location = new System.Drawing.Point(511, 524);
this.uiLabel5.Name = "uiLabel5"; this.uiLabel5.Name = "uiLabel5";
this.uiLabel5.Size = new System.Drawing.Size(59, 23); this.uiLabel5.Size = new System.Drawing.Size(59, 23);
@ -396,7 +408,7 @@ namespace Sunny.UI.Demo
this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0); this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0);
this.PageIndex = 999; this.PageIndex = 999;
this.ShowTitle = true; this.ShowTitle = true;
this.Symbol = 262210; this.Symbol = 558295;
this.Text = "多彩主题"; this.Text = "多彩主题";
this.ResumeLayout(false); this.ResumeLayout(false);

View File

@ -32,7 +32,6 @@
this.btnWarn = new Sunny.UI.UISymbolButton(); this.btnWarn = new Sunny.UI.UISymbolButton();
this.btnSuccess = new Sunny.UI.UISymbolButton(); this.btnSuccess = new Sunny.UI.UISymbolButton();
this.btnAsk = new Sunny.UI.UISymbolButton(); this.btnAsk = new Sunny.UI.UISymbolButton();
this.btnAuto = new Sunny.UI.UISymbolButton();
this.btnStatus2 = new Sunny.UI.UISymbolButton(); this.btnStatus2 = new Sunny.UI.UISymbolButton();
this.btnInfo = new Sunny.UI.UISymbolButton(); this.btnInfo = new Sunny.UI.UISymbolButton();
this.btnPasswordInput = new Sunny.UI.UISymbolButton(); this.btnPasswordInput = new Sunny.UI.UISymbolButton();
@ -85,11 +84,11 @@
this.btnError.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.btnError.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.btnError.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.btnError.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.btnError.Size = new System.Drawing.Size(100, 35); this.btnError.Size = new System.Drawing.Size(100, 35);
this.btnError.Style = Sunny.UI.UIStyle.Red; this.btnError.Style = Sunny.UI.UIStyle.Custom;
this.btnError.StyleCustomMode = true; this.btnError.StyleCustomMode = true;
this.btnError.Symbol = 61532; this.btnError.Symbol = 61532;
this.btnError.TabIndex = 29; this.btnError.TabIndex = 29;
this.btnError.Text = "Error"; this.btnError.Text = "错误";
this.btnError.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnError.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnError.Click += new System.EventHandler(this.btnError_Click); this.btnError.Click += new System.EventHandler(this.btnError_Click);
// //
@ -111,11 +110,11 @@
this.btnWarn.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.btnWarn.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.btnWarn.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.btnWarn.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.btnWarn.Size = new System.Drawing.Size(100, 35); this.btnWarn.Size = new System.Drawing.Size(100, 35);
this.btnWarn.Style = Sunny.UI.UIStyle.Orange; this.btnWarn.Style = Sunny.UI.UIStyle.Custom;
this.btnWarn.StyleCustomMode = true; this.btnWarn.StyleCustomMode = true;
this.btnWarn.Symbol = 61553; this.btnWarn.Symbol = 61553;
this.btnWarn.TabIndex = 28; this.btnWarn.TabIndex = 28;
this.btnWarn.Text = "Warn"; this.btnWarn.Text = "警告";
this.btnWarn.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnWarn.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnWarn.Click += new System.EventHandler(this.btnWarn_Click); this.btnWarn.Click += new System.EventHandler(this.btnWarn_Click);
// //
@ -137,11 +136,11 @@
this.btnSuccess.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.btnSuccess.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.btnSuccess.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.btnSuccess.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.btnSuccess.Size = new System.Drawing.Size(100, 35); this.btnSuccess.Size = new System.Drawing.Size(100, 35);
this.btnSuccess.Style = Sunny.UI.UIStyle.Green; this.btnSuccess.Style = Sunny.UI.UIStyle.Custom;
this.btnSuccess.StyleCustomMode = true; this.btnSuccess.StyleCustomMode = true;
this.btnSuccess.Symbol = 61528; this.btnSuccess.Symbol = 61528;
this.btnSuccess.TabIndex = 27; this.btnSuccess.TabIndex = 27;
this.btnSuccess.Text = "Success"; this.btnSuccess.Text = "成功";
this.btnSuccess.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnSuccess.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSuccess.Click += new System.EventHandler(this.btnSuccess_Click); this.btnSuccess.Click += new System.EventHandler(this.btnSuccess_Click);
// //
@ -157,25 +156,10 @@
this.btnAsk.StyleCustomMode = true; this.btnAsk.StyleCustomMode = true;
this.btnAsk.Symbol = 61529; this.btnAsk.Symbol = 61529;
this.btnAsk.TabIndex = 26; this.btnAsk.TabIndex = 26;
this.btnAsk.Text = "Query"; this.btnAsk.Text = "确认";
this.btnAsk.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnAsk.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAsk.Click += new System.EventHandler(this.btnAsk_Click); this.btnAsk.Click += new System.EventHandler(this.btnAsk_Click);
// //
// btnAuto
//
this.btnAuto.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAuto.Font = new System.Drawing.Font("宋体", 12F);
this.btnAuto.Location = new System.Drawing.Point(30, 88);
this.btnAuto.MinimumSize = new System.Drawing.Size(1, 1);
this.btnAuto.Name = "btnAuto";
this.btnAuto.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnAuto.Size = new System.Drawing.Size(100, 35);
this.btnAuto.Symbol = 61732;
this.btnAuto.TabIndex = 31;
this.btnAuto.Text = "Auto";
this.btnAuto.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAuto.Click += new System.EventHandler(this.btnAuto_Click);
//
// btnStatus2 // btnStatus2
// //
this.btnStatus2.Cursor = System.Windows.Forms.Cursors.Hand; this.btnStatus2.Cursor = System.Windows.Forms.Cursors.Hand;
@ -194,26 +178,16 @@
// btnInfo // btnInfo
// //
this.btnInfo.Cursor = System.Windows.Forms.Cursors.Hand; this.btnInfo.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnInfo.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.btnInfo.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.btnInfo.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(163)))), ((int)(((byte)(163)))), ((int)(((byte)(163)))));
this.btnInfo.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.btnInfo.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.btnInfo.Font = new System.Drawing.Font("宋体", 12F); this.btnInfo.Font = new System.Drawing.Font("宋体", 12F);
this.btnInfo.Location = new System.Drawing.Point(258, 88); this.btnInfo.Location = new System.Drawing.Point(30, 88);
this.btnInfo.MinimumSize = new System.Drawing.Size(1, 1); this.btnInfo.MinimumSize = new System.Drawing.Size(1, 1);
this.btnInfo.Name = "btnInfo"; this.btnInfo.Name = "btnInfo";
this.btnInfo.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0); this.btnInfo.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnInfo.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.btnInfo.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(163)))), ((int)(((byte)(163)))), ((int)(((byte)(163)))));
this.btnInfo.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.btnInfo.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.btnInfo.Size = new System.Drawing.Size(100, 35); this.btnInfo.Size = new System.Drawing.Size(100, 35);
this.btnInfo.Style = Sunny.UI.UIStyle.Gray;
this.btnInfo.StyleCustomMode = true; this.btnInfo.StyleCustomMode = true;
this.btnInfo.Symbol = 61530; this.btnInfo.Symbol = 61530;
this.btnInfo.TabIndex = 37; this.btnInfo.TabIndex = 37;
this.btnInfo.Text = "Info"; this.btnInfo.Text = "提示";
this.btnInfo.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnInfo.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnInfo.Click += new System.EventHandler(this.btnInfo_Click); this.btnInfo.Click += new System.EventHandler(this.btnInfo_Click);
// //
@ -279,7 +253,9 @@
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(30, 55); this.uiLine1.Location = new System.Drawing.Point(30, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -290,7 +266,9 @@
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(30, 134); this.uiLine2.Location = new System.Drawing.Point(30, 134);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
@ -301,7 +279,9 @@
// //
// uiLine3 // uiLine3
// //
this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F); this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(30, 213); this.uiLine3.Location = new System.Drawing.Point(30, 213);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3"; this.uiLine3.Name = "uiLine3";
@ -312,7 +292,9 @@
// //
// uiLine4 // uiLine4
// //
this.uiLine4.BackColor = System.Drawing.Color.Transparent;
this.uiLine4.Font = new System.Drawing.Font("宋体", 12F); this.uiLine4.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine4.Location = new System.Drawing.Point(543, 213); this.uiLine4.Location = new System.Drawing.Point(543, 213);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4"; this.uiLine4.Name = "uiLine4";
@ -338,11 +320,13 @@
// //
// uiLine5 // uiLine5
// //
this.uiLine5.BackColor = System.Drawing.Color.Transparent;
this.uiLine5.Font = new System.Drawing.Font("宋体", 12F); this.uiLine5.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine5.Location = new System.Drawing.Point(30, 292); this.uiLine5.Location = new System.Drawing.Point(30, 292);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5"; this.uiLine5.Name = "uiLine5";
this.uiLine5.Size = new System.Drawing.Size(670, 20); this.uiLine5.Size = new System.Drawing.Size(442, 20);
this.uiLine5.TabIndex = 58; this.uiLine5.TabIndex = 58;
this.uiLine5.Text = "UINotifier"; this.uiLine5.Text = "UINotifier";
this.uiLine5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@ -356,10 +340,11 @@
this.uiSymbolButton2.Name = "uiSymbolButton2"; this.uiSymbolButton2.Name = "uiSymbolButton2";
this.uiSymbolButton2.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0); this.uiSymbolButton2.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton2.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton2.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton2.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton2.StyleCustomMode = true; this.uiSymbolButton2.StyleCustomMode = true;
this.uiSymbolButton2.Symbol = 61530; this.uiSymbolButton2.Symbol = 61530;
this.uiSymbolButton2.TabIndex = 57; this.uiSymbolButton2.TabIndex = 57;
this.uiSymbolButton2.Text = "Info"; this.uiSymbolButton2.Text = "提示";
this.uiSymbolButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton2.Click += new System.EventHandler(this.uiSymbolButton2_Click); this.uiSymbolButton2.Click += new System.EventHandler(this.uiSymbolButton2_Click);
// //
@ -381,11 +366,11 @@
this.uiSymbolButton4.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton4.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton4.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton4.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton4.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton4.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton4.Style = Sunny.UI.UIStyle.Red; this.uiSymbolButton4.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton4.StyleCustomMode = true; this.uiSymbolButton4.StyleCustomMode = true;
this.uiSymbolButton4.Symbol = 61532; this.uiSymbolButton4.Symbol = 61532;
this.uiSymbolButton4.TabIndex = 55; this.uiSymbolButton4.TabIndex = 55;
this.uiSymbolButton4.Text = "Error"; this.uiSymbolButton4.Text = "错误";
this.uiSymbolButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton4.Click += new System.EventHandler(this.uiSymbolButton4_Click); this.uiSymbolButton4.Click += new System.EventHandler(this.uiSymbolButton4_Click);
// //
@ -407,11 +392,11 @@
this.uiSymbolButton5.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiSymbolButton5.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiSymbolButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton5.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton5.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Orange; this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton5.StyleCustomMode = true; this.uiSymbolButton5.StyleCustomMode = true;
this.uiSymbolButton5.Symbol = 61553; this.uiSymbolButton5.Symbol = 61553;
this.uiSymbolButton5.TabIndex = 54; this.uiSymbolButton5.TabIndex = 54;
this.uiSymbolButton5.Text = "Warn"; this.uiSymbolButton5.Text = "警告";
this.uiSymbolButton5.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton5.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton5.Click += new System.EventHandler(this.uiSymbolButton5_Click); this.uiSymbolButton5.Click += new System.EventHandler(this.uiSymbolButton5_Click);
// //
@ -433,23 +418,25 @@
this.uiSymbolButton6.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiSymbolButton6.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiSymbolButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton6.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton6.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Green; this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton6.StyleCustomMode = true; this.uiSymbolButton6.StyleCustomMode = true;
this.uiSymbolButton6.Symbol = 61528; this.uiSymbolButton6.Symbol = 61528;
this.uiSymbolButton6.TabIndex = 53; this.uiSymbolButton6.TabIndex = 53;
this.uiSymbolButton6.Text = "Success"; this.uiSymbolButton6.Text = "成功";
this.uiSymbolButton6.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton6.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton6.Click += new System.EventHandler(this.uiSymbolButton6_Click); this.uiSymbolButton6.Click += new System.EventHandler(this.uiSymbolButton6_Click);
// //
// uiLine6 // uiLine6
// //
this.uiLine6.BackColor = System.Drawing.Color.Transparent;
this.uiLine6.Font = new System.Drawing.Font("宋体", 12F); this.uiLine6.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine6.Location = new System.Drawing.Point(30, 450); this.uiLine6.Location = new System.Drawing.Point(30, 450);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6"; this.uiLine6.Name = "uiLine6";
this.uiLine6.Size = new System.Drawing.Size(328, 20); this.uiLine6.Size = new System.Drawing.Size(668, 20);
this.uiLine6.TabIndex = 59; this.uiLine6.TabIndex = 59;
this.uiLine6.Text = "ULocalize"; this.uiLine6.Text = "国际化";
this.uiLine6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// btnEN // btnEN
@ -463,7 +450,7 @@
this.btnEN.Size = new System.Drawing.Size(100, 35); this.btnEN.Size = new System.Drawing.Size(100, 35);
this.btnEN.Symbol = 57571; this.btnEN.Symbol = 57571;
this.btnEN.TabIndex = 61; this.btnEN.TabIndex = 61;
this.btnEN.Text = "EN"; this.btnEN.Text = "English";
this.btnEN.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnEN.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnEN.Click += new System.EventHandler(this.btnEN_Click); this.btnEN.Click += new System.EventHandler(this.btnEN_Click);
// //
@ -479,13 +466,15 @@
this.btnCH.StyleCustomMode = true; this.btnCH.StyleCustomMode = true;
this.btnCH.Symbol = 57571; this.btnCH.Symbol = 57571;
this.btnCH.TabIndex = 60; this.btnCH.TabIndex = 60;
this.btnCH.Text = "CH"; this.btnCH.Text = "中文";
this.btnCH.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnCH.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCH.Click += new System.EventHandler(this.btnCH_Click); this.btnCH.Click += new System.EventHandler(this.btnCH_Click);
// //
// uiLine7 // uiLine7
// //
this.uiLine7.BackColor = System.Drawing.Color.Transparent;
this.uiLine7.Font = new System.Drawing.Font("宋体", 12F); this.uiLine7.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine7.Location = new System.Drawing.Point(30, 371); this.uiLine7.Location = new System.Drawing.Point(30, 371);
this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine7.Name = "uiLine7"; this.uiLine7.Name = "uiLine7";
@ -512,11 +501,11 @@
this.uiSymbolButton7.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton7.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton7.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.uiSymbolButton7.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton7.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton7.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton7.Style = Sunny.UI.UIStyle.Red; this.uiSymbolButton7.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton7.StyleCustomMode = true; this.uiSymbolButton7.StyleCustomMode = true;
this.uiSymbolButton7.Symbol = 61532; this.uiSymbolButton7.Symbol = 61532;
this.uiSymbolButton7.TabIndex = 64; this.uiSymbolButton7.TabIndex = 64;
this.uiSymbolButton7.Text = "Error"; this.uiSymbolButton7.Text = "错误";
this.uiSymbolButton7.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton7.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton7.Click += new System.EventHandler(this.uiSymbolButton7_Click); this.uiSymbolButton7.Click += new System.EventHandler(this.uiSymbolButton7_Click);
// //
@ -538,11 +527,11 @@
this.uiSymbolButton8.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiSymbolButton8.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton8.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); this.uiSymbolButton8.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton8.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton8.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton8.Style = Sunny.UI.UIStyle.Orange; this.uiSymbolButton8.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton8.StyleCustomMode = true; this.uiSymbolButton8.StyleCustomMode = true;
this.uiSymbolButton8.Symbol = 61553; this.uiSymbolButton8.Symbol = 61553;
this.uiSymbolButton8.TabIndex = 63; this.uiSymbolButton8.TabIndex = 63;
this.uiSymbolButton8.Text = "Warn"; this.uiSymbolButton8.Text = "警告";
this.uiSymbolButton8.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton8.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton8.Click += new System.EventHandler(this.uiSymbolButton8_Click); this.uiSymbolButton8.Click += new System.EventHandler(this.uiSymbolButton8_Click);
// //
@ -564,17 +553,19 @@
this.uiSymbolButton9.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiSymbolButton9.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton9.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); this.uiSymbolButton9.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton9.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton9.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton9.Style = Sunny.UI.UIStyle.Green; this.uiSymbolButton9.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton9.StyleCustomMode = true; this.uiSymbolButton9.StyleCustomMode = true;
this.uiSymbolButton9.Symbol = 61528; this.uiSymbolButton9.Symbol = 61528;
this.uiSymbolButton9.TabIndex = 62; this.uiSymbolButton9.TabIndex = 62;
this.uiSymbolButton9.Text = "Success"; this.uiSymbolButton9.Text = "成功";
this.uiSymbolButton9.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton9.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton9.Click += new System.EventHandler(this.uiSymbolButton9_Click); this.uiSymbolButton9.Click += new System.EventHandler(this.uiSymbolButton9_Click);
// //
// uiLine8 // uiLine8
// //
this.uiLine8.BackColor = System.Drawing.Color.Transparent;
this.uiLine8.Font = new System.Drawing.Font("宋体", 12F); this.uiLine8.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine8.Location = new System.Drawing.Point(372, 371); this.uiLine8.Location = new System.Drawing.Point(372, 371);
this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine8.Name = "uiLine8"; this.uiLine8.Name = "uiLine8";
@ -594,7 +585,7 @@
this.uiSymbolButton3.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton3.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton3.Symbol = 62144; this.uiSymbolButton3.Symbol = 62144;
this.uiSymbolButton3.TabIndex = 68; this.uiSymbolButton3.TabIndex = 68;
this.uiSymbolButton3.Text = "Login"; this.uiSymbolButton3.Text = "登录";
this.uiSymbolButton3.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton3.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton3.Click += new System.EventHandler(this.uiSymbolButton3_Click); this.uiSymbolButton3.Click += new System.EventHandler(this.uiSymbolButton3_Click);
// //
@ -609,7 +600,7 @@
this.uiSymbolButton10.Size = new System.Drawing.Size(100, 35); this.uiSymbolButton10.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton10.Symbol = 61447; this.uiSymbolButton10.Symbol = 61447;
this.uiSymbolButton10.TabIndex = 67; this.uiSymbolButton10.TabIndex = 67;
this.uiSymbolButton10.Text = "Login"; this.uiSymbolButton10.Text = "登录";
this.uiSymbolButton10.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiSymbolButton10.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton10.Click += new System.EventHandler(this.uiSymbolButton10_Click); this.uiSymbolButton10.Click += new System.EventHandler(this.uiSymbolButton10_Click);
// //
@ -630,7 +621,9 @@
// //
// uiLine9 // uiLine9
// //
this.uiLine9.BackColor = System.Drawing.Color.Transparent;
this.uiLine9.Font = new System.Drawing.Font("宋体", 12F); this.uiLine9.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine9.Location = new System.Drawing.Point(201, 213); this.uiLine9.Location = new System.Drawing.Point(201, 213);
this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine9.Name = "uiLine9"; this.uiLine9.Name = "uiLine9";
@ -641,11 +634,13 @@
// //
// uiLine10 // uiLine10
// //
this.uiLine10.BackColor = System.Drawing.Color.Transparent;
this.uiLine10.Font = new System.Drawing.Font("宋体", 12F); this.uiLine10.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine10.Location = new System.Drawing.Point(372, 450); this.uiLine10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine10.Location = new System.Drawing.Point(486, 292);
this.uiLine10.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine10.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine10.Name = "uiLine10"; this.uiLine10.Name = "uiLine10";
this.uiLine10.Size = new System.Drawing.Size(328, 20); this.uiLine10.Size = new System.Drawing.Size(214, 20);
this.uiLine10.TabIndex = 74; this.uiLine10.TabIndex = 74;
this.uiLine10.Text = "选择文件夹"; this.uiLine10.Text = "选择文件夹";
this.uiLine10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@ -654,7 +649,7 @@
// //
this.uiSymbolButton13.Cursor = System.Windows.Forms.Cursors.Hand; this.uiSymbolButton13.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiSymbolButton13.Font = new System.Drawing.Font("宋体", 12F); this.uiSymbolButton13.Font = new System.Drawing.Font("宋体", 12F);
this.uiSymbolButton13.Location = new System.Drawing.Point(372, 482); this.uiSymbolButton13.Location = new System.Drawing.Point(484, 324);
this.uiSymbolButton13.MinimumSize = new System.Drawing.Size(1, 1); this.uiSymbolButton13.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSymbolButton13.Name = "uiSymbolButton13"; this.uiSymbolButton13.Name = "uiSymbolButton13";
this.uiSymbolButton13.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0); this.uiSymbolButton13.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
@ -667,7 +662,9 @@
// //
// uiLine11 // uiLine11
// //
this.uiLine11.BackColor = System.Drawing.Color.Transparent;
this.uiLine11.Font = new System.Drawing.Font("宋体", 12F); this.uiLine11.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine11.Location = new System.Drawing.Point(372, 213); this.uiLine11.Location = new System.Drawing.Point(372, 213);
this.uiLine11.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine11.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine11.Name = "uiLine11"; this.uiLine11.Name = "uiLine11";
@ -695,7 +692,7 @@
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 549); this.ClientSize = new System.Drawing.Size(800, 590);
this.Controls.Add(this.uiLine11); this.Controls.Add(this.uiLine11);
this.Controls.Add(this.uiSymbolButton12); this.Controls.Add(this.uiSymbolButton12);
this.Controls.Add(this.uiLine1); this.Controls.Add(this.uiLine1);
@ -716,7 +713,6 @@
this.Controls.Add(this.uiSymbolButton1); this.Controls.Add(this.uiSymbolButton1);
this.Controls.Add(this.uiLine8); this.Controls.Add(this.uiLine8);
this.Controls.Add(this.uiLine6); this.Controls.Add(this.uiLine6);
this.Controls.Add(this.btnAuto);
this.Controls.Add(this.uiLine3); this.Controls.Add(this.uiLine3);
this.Controls.Add(this.uiSymbolButton3); this.Controls.Add(this.uiSymbolButton3);
this.Controls.Add(this.btnCH); this.Controls.Add(this.btnCH);
@ -748,7 +744,6 @@
private UISymbolButton btnWarn; private UISymbolButton btnWarn;
private UISymbolButton btnSuccess; private UISymbolButton btnSuccess;
private UISymbolButton btnAsk; private UISymbolButton btnAsk;
private UISymbolButton btnAuto;
private UISymbolButton btnStatus2; private UISymbolButton btnStatus2;
private UISymbolButton btnInfo; private UISymbolButton btnInfo;
private UISymbolButton btnPasswordInput; private UISymbolButton btnPasswordInput;

View File

@ -4,96 +4,110 @@ using System.Threading;
namespace Sunny.UI.Demo namespace Sunny.UI.Demo
{ {
public partial class FDialogs : UIPage public partial class FDialogs : UIPage, ITranslate
{ {
public FDialogs() public FDialogs()
{ {
InitializeComponent(); InitializeComponent();
} }
private void btnAsk_Click(object sender, EventArgs e) public override void Init()
{ {
if (ShowAskDialog("确认信息提示框")) base.Init();
{ btnCH.PerformClick();
ShowSuccessTip("您点击了确定按钮");
}
else
{
ShowErrorTip("您点击了取消按钮");
}
}
private void btnAuto_Click(object sender, EventArgs e)
{
UIMessageDialog.ShowMessageDialog("跟随界面主题风格信息提示框", UILocalize.InfoTitle, false, Style);
}
private void btnSuccess_Click(object sender, EventArgs e)
{
ShowSuccessDialog("正确信息提示框");
}
private void btnWarn_Click(object sender, EventArgs e)
{
ShowWarningDialog("警告信息提示框");
}
private void btnError_Click(object sender, EventArgs e)
{
ShowErrorDialog("错误信息提示框");
}
private void btnStatus2_Click(object sender, EventArgs e)
{
ShowStatusForm(100, "数据加载中......", 0);
for (int i = 0; i < 88; i++)
{
SystemEx.Delay(50);
SetStatusFormDescription("数据加载中(" + i + "%)......");
StatusFormStepIt();
}
HideStatusForm();
} }
private void btnInfo_Click(object sender, EventArgs e) private void btnInfo_Click(object sender, EventArgs e)
{ {
ShowInfoDialog("默认信息提示框"); this.ShowInfoDialog2(CodeTranslator.Current.Default);
this.ShowInfoDialog(CodeTranslator.Current.Default);
}
private void btnAsk_Click(object sender, EventArgs e)
{
if (this.ShowAskDialog2(CodeTranslator.Current.Confirm, true))
{
this.ShowSuccessTip(CodeTranslator.Current.PressedOK);
}
else
{
this.ShowErrorTip(CodeTranslator.Current.PressedCancel);
}
if (this.ShowAskDialog(CodeTranslator.Current.Confirm))
{
this.ShowSuccessTip(CodeTranslator.Current.PressedOK);
}
else
{
this.ShowErrorTip(CodeTranslator.Current.PressedCancel);
}
}
private void btnSuccess_Click(object sender, EventArgs e)
{
this.ShowSuccessDialog2(CodeTranslator.Current.Success, false, 3000);
this.ShowSuccessDialog(CodeTranslator.Current.Success, false, 3000);
}
private void btnWarn_Click(object sender, EventArgs e)
{
this.ShowWarningDialog2(CodeTranslator.Current.Warning);
this.ShowWarningDialog(CodeTranslator.Current.Warning);
}
private void btnError_Click(object sender, EventArgs e)
{
this.ShowErrorDialog2(CodeTranslator.Current.Error);
this.ShowErrorDialog(CodeTranslator.Current.Error);
}
private void btnStatus2_Click(object sender, EventArgs e)
{
this.ShowStatusForm(100, CodeTranslator.Current.Loading + "......", 0);
for (int i = 0; i < 88; i++)
{
SystemEx.Delay(50);
this.SetStatusFormDescription(CodeTranslator.Current.Loading + "(" + i + "%)......");
this.SetStatusFormStepIt();
}
this.HideStatusForm();
} }
private void btnStringInput_Click(object sender, EventArgs e) private void btnStringInput_Click(object sender, EventArgs e)
{ {
string value = "请输入字符串"; string value = CodeTranslator.Current.InputString;
if (this.InputStringDialog(ref value, true, "请输入字符串:", true)) if (this.ShowInputStringDialog(ref value, true, CodeTranslator.Current.InputString, true))
{ {
ShowInfoDialog(value); this.ShowInfoDialog(value);
} }
} }
private void btnIntInput_Click(object sender, EventArgs e) private void btnIntInput_Click(object sender, EventArgs e)
{ {
int value = 0; int value = 0;
if (this.InputIntegerDialog(ref value)) if (this.ShowInputIntegerDialog(ref value))
{ {
ShowInfoDialog(value.ToString()); this.ShowInfoDialog(value.ToString());
} }
} }
private void btnDoubleInput_Click(object sender, EventArgs e) private void btnDoubleInput_Click(object sender, EventArgs e)
{ {
double value = 0; double value = 0;
if (this.InputDoubleDialog(ref value)) if (this.ShowInputDoubleDialog(ref value))
{ {
ShowInfoDialog(value.ToString("F2")); this.ShowInfoDialog(value.ToString("F2"));
} }
} }
private void btnPasswordInput_Click(object sender, EventArgs e) private void btnPasswordInput_Click(object sender, EventArgs e)
{ {
string value = ""; string value = "";
if (this.InputPasswordDialog(ref value)) if (this.ShowInputPasswordDialog(ref value))
{ {
ShowInfoDialog(value); this.ShowInfoDialog(value);
} }
} }
@ -103,58 +117,48 @@ namespace Sunny.UI.Demo
int index = 2; int index = 2;
if (this.ShowSelectDialog(ref index, items)) if (this.ShowSelectDialog(ref index, items))
{ {
ShowInfoDialog(index.ToString()); this.ShowInfoDialog(index.ToString());
} }
} }
private void uiSymbolButton2_Click(object sender, EventArgs e) private void uiSymbolButton2_Click(object sender, EventArgs e)
{ {
ShowInfoNotifier("Info", InfoNotifierClick); this.ShowInfoNotifier("Hello SunnyUI!", InfoNotifierClick);
} }
private void InfoNotifierClick(object sender, EventArgs e) private void InfoNotifierClick(object sender, DescriptionEventArgs e)
{ {
ShowInfoTip("嗨,你点击了右下角的弹窗消息"); this.ShowInfoTip(e.Description);
} }
private void uiSymbolButton6_Click(object sender, EventArgs e) private void uiSymbolButton6_Click(object sender, EventArgs e)
{ {
ShowSuccessNotifier("Success"); this.ShowSuccessNotifier("Success");
} }
private void uiSymbolButton5_Click(object sender, EventArgs e) private void uiSymbolButton5_Click(object sender, EventArgs e)
{ {
ShowWarningNotifier("Warning"); this.ShowWarningNotifier("Warning");
} }
private void uiSymbolButton4_Click(object sender, EventArgs e) private void uiSymbolButton4_Click(object sender, EventArgs e)
{ {
ShowErrorNotifier("Error"); this.ShowErrorNotifier("Error");
}
private void btnCH_Click(object sender, EventArgs e)
{
UILocalizeHelper.SetCH();
}
private void btnEN_Click(object sender, EventArgs e)
{
UILocalizeHelper.SetEN();
} }
private void uiSymbolButton9_Click(object sender, EventArgs e) private void uiSymbolButton9_Click(object sender, EventArgs e)
{ {
ShowSuccessTip("轻便消息提示框 - 成功"); this.ShowSuccessTip(CodeTranslator.Current.Success);
} }
private void uiSymbolButton8_Click(object sender, EventArgs e) private void uiSymbolButton8_Click(object sender, EventArgs e)
{ {
ShowWarningTip("轻便消息提示框 - 警告"); this.ShowWarningTip(CodeTranslator.Current.Warning);
} }
private void uiSymbolButton7_Click(object sender, EventArgs e) private void uiSymbolButton7_Click(object sender, EventArgs e)
{ {
ShowErrorTip("轻便消息提示框 - 错误"); this.ShowErrorTip(CodeTranslator.Current.Error);
} }
private void uiSymbolButton10_Click(object sender, EventArgs e) private void uiSymbolButton10_Click(object sender, EventArgs e)
@ -163,7 +167,7 @@ namespace Sunny.UI.Demo
frm.ShowDialog(); frm.ShowDialog();
if (frm.IsLogin) if (frm.IsLogin)
{ {
UIMessageTip.ShowOk("登录成功"); UIMessageTip.ShowOk(CodeTranslator.Current.LoginSuccess);
} }
frm.Dispose(); frm.Dispose();
@ -184,7 +188,7 @@ namespace Sunny.UI.Demo
frm.ShowDialog(); frm.ShowDialog();
if (frm.IsLogin) if (frm.IsLogin)
{ {
UIMessageTip.ShowOk("登录成功"); UIMessageTip.ShowOk(CodeTranslator.Current.LoginSuccess);
} }
frm.Dispose(); frm.Dispose();
@ -197,24 +201,24 @@ namespace Sunny.UI.Demo
private void uiSymbolButton11_Click(object sender, EventArgs e) private void uiSymbolButton11_Click(object sender, EventArgs e)
{ {
ShowWaitForm("准备开始..."); this.ShowWaitForm(CodeTranslator.Current.Prepare);
Thread.Sleep(1000); Thread.Sleep(1000);
SetWaitFormDescription(UILocalize.SystemProcessing + "20%"); this.SetWaitFormDescription(UIStyles.CurrentResources.SystemProcessing + "20%");
Thread.Sleep(1000); Thread.Sleep(1000);
SetWaitFormDescription(UILocalize.SystemProcessing + "40%"); this.SetWaitFormDescription(UIStyles.CurrentResources.SystemProcessing + "40%");
Thread.Sleep(1000); Thread.Sleep(1000);
SetWaitFormDescription(UILocalize.SystemProcessing + "60%"); this.SetWaitFormDescription(UIStyles.CurrentResources.SystemProcessing + "60%");
Thread.Sleep(1000); Thread.Sleep(1000);
SetWaitFormDescription(UILocalize.SystemProcessing + "80%"); this.SetWaitFormDescription(UIStyles.CurrentResources.SystemProcessing + "80%");
Thread.Sleep(1000); Thread.Sleep(1000);
SetWaitFormDescription(UILocalize.SystemProcessing + "100%"); this.SetWaitFormDescription(UIStyles.CurrentResources.SystemProcessing + "100%");
HideWaitForm(); this.HideWaitForm();
} }
private void uiSymbolButton13_Click(object sender, EventArgs e) private void uiSymbolButton13_Click(object sender, EventArgs e)
{ {
string dir = ""; string dir = "";
if (DirEx.SelectDirEx("扩展打开文件夹", ref dir)) if (DirEx.SelectDirEx(CodeTranslator.Current.OpenDir, ref dir))
{ {
UIMessageTip.ShowOk(dir); UIMessageTip.ShowOk(dir);
} }
@ -222,9 +226,47 @@ namespace Sunny.UI.Demo
private void uiSymbolButton12_Click(object sender, EventArgs e) private void uiSymbolButton12_Click(object sender, EventArgs e)
{ {
ShowProcessForm(200); this.ShowProcessForm(200);
Thread.Sleep(2000); Thread.Sleep(2000);
HideProcessForm(); this.HideProcessForm();
}
private void btnCH_Click(object sender, EventArgs e)
{
UIStyles.CultureInfo = CultureInfos.zh_CN;
}
private void btnEN_Click(object sender, EventArgs e)
{
UIStyles.CultureInfo = CultureInfos.en_US;
}
/// <summary>
/// 重载多语翻译
/// </summary>
public override void Translate()
{
//必须保留
base.Translate();
//读取翻译代码中的多语资源
CodeTranslator.Load(this);
}
private class CodeTranslator : IniCodeTranslator<CodeTranslator>
{
public string Default { get; set; } = "默认信息提示框";
public string Confirm { get; set; } = "确认信息提示框";
public string PressedOK { get; set; } = "您点击了确定按钮";
public string PressedCancel { get; set; } = "您点击了取消按钮";
public string Success { get; set; } = "正确信息提示框";
public string Warning { get; set; } = "警告信息提示框";
public string Error { get; set; } = "错误信息提示框";
public string Loading { get; set; } = "数据加载中";
public string InputString { get; set; } = "请输入字符串";
public string PressedNotifier { get; set; } = "嗨,你点击了右下角的弹窗消息";
public string LoginSuccess { get; set; } = "登录成功";
public string Prepare { get; set; } = "准备开始";
public string OpenDir { get; set; } = "打开文件夹";
} }
} }
} }

View File

@ -39,7 +39,7 @@ namespace Sunny.UI.Demo
frm.ShowDialog(); frm.ShowDialog();
if (frm.IsOK) if (frm.IsOK)
{ {
ShowSuccessDialog(frm.Person.ToString()); this.ShowSuccessDialog(frm.Person.ToString());
} }
frm.Dispose(); frm.Dispose();
@ -116,7 +116,7 @@ namespace Sunny.UI.Demo
if (e.Form["Age"].ToString().ToInt() < 18 || e.Form["Age"].ToString().ToInt() > 60) if (e.Form["Age"].ToString().ToInt() < 18 || e.Form["Age"].ToString().ToInt() > 60)
{ {
e.Form.SetEditorFocus("Age"); e.Form.SetEditorFocus("Age");
ShowWarningTip("年龄范围为18到60岁"); this.ShowWarningTip("年龄范围为18到60岁");
return false; return false;
} }

View File

@ -18,7 +18,7 @@
} }
else else
{ {
ShowErrorTip("用户名或者密码错误。"); this.ShowErrorTip("用户名或者密码错误。");
} }
} }
} }

430
SunnyUI.Demo/Forms/FSymbols.Designer.cs generated Normal file
View File

@ -0,0 +1,430 @@
namespace Sunny.UI.Demo
{
partial class FSymbols
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.uiPanel1 = new Sunny.UI.UIPanel();
this.uiSymbolLabel1 = new Sunny.UI.UISymbolLabel();
this.uiSymbolButton2 = new Sunny.UI.UISymbolButton();
this.uiTextBox2 = new Sunny.UI.UITextBox();
this.uiSymbolButton1 = new Sunny.UI.UISymbolButton();
this.uiLabel1 = new Sunny.UI.UILabel();
this.uiTextBox1 = new Sunny.UI.UITextBox();
this.uiTabControl1 = new Sunny.UI.UITabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.lpV6Solid = new Sunny.UI.UIFlowLayoutPanel();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.lpV6Regular = new Sunny.UI.UIFlowLayoutPanel();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.lpV6Brands = new Sunny.UI.UIFlowLayoutPanel();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.lpAwesome = new Sunny.UI.UIFlowLayoutPanel();
this.tabPage5 = new System.Windows.Forms.TabPage();
this.lpElegant = new Sunny.UI.UIFlowLayoutPanel();
this.tabPage6 = new System.Windows.Forms.TabPage();
this.lpMaterialIcons = new Sunny.UI.UIFlowLayoutPanel();
this.tabPage7 = new System.Windows.Forms.TabPage();
this.lblResult = new Sunny.UI.UIFlowLayoutPanel();
this.uiPanel1.SuspendLayout();
this.uiTabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
this.tabPage3.SuspendLayout();
this.tabPage4.SuspendLayout();
this.tabPage5.SuspendLayout();
this.tabPage6.SuspendLayout();
this.tabPage7.SuspendLayout();
this.SuspendLayout();
//
// uiPanel1
//
this.uiPanel1.Controls.Add(this.uiSymbolLabel1);
this.uiPanel1.Controls.Add(this.uiSymbolButton2);
this.uiPanel1.Controls.Add(this.uiTextBox2);
this.uiPanel1.Controls.Add(this.uiSymbolButton1);
this.uiPanel1.Controls.Add(this.uiLabel1);
this.uiPanel1.Controls.Add(this.uiTextBox1);
this.uiPanel1.Dock = System.Windows.Forms.DockStyle.Top;
this.uiPanel1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiPanel1.Location = new System.Drawing.Point(0, 35);
this.uiPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiPanel1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiPanel1.Name = "uiPanel1";
this.uiPanel1.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiPanel1.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)));
this.uiPanel1.Size = new System.Drawing.Size(1004, 46);
this.uiPanel1.TabIndex = 0;
this.uiPanel1.Text = null;
this.uiPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// uiSymbolLabel1
//
this.uiSymbolLabel1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolLabel1.Location = new System.Drawing.Point(406, 6);
this.uiSymbolLabel1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSymbolLabel1.Name = "uiSymbolLabel1";
this.uiSymbolLabel1.Size = new System.Drawing.Size(98, 35);
this.uiSymbolLabel1.TabIndex = 5;
this.uiSymbolLabel1.Text = "图标值";
//
// uiSymbolButton2
//
this.uiSymbolButton2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiSymbolButton2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton2.Location = new System.Drawing.Point(595, 6);
this.uiSymbolButton2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSymbolButton2.Name = "uiSymbolButton2";
this.uiSymbolButton2.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton2.Symbol = 557715;
this.uiSymbolButton2.TabIndex = 3;
this.uiSymbolButton2.Text = "复制";
this.uiSymbolButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton2.Click += new System.EventHandler(this.uiSymbolButton2_Click);
//
// uiTextBox2
//
this.uiTextBox2.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTextBox2.Location = new System.Drawing.Point(508, 9);
this.uiTextBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTextBox2.MinimumSize = new System.Drawing.Size(1, 16);
this.uiTextBox2.Name = "uiTextBox2";
this.uiTextBox2.Padding = new System.Windows.Forms.Padding(5);
this.uiTextBox2.ShowText = false;
this.uiTextBox2.Size = new System.Drawing.Size(80, 29);
this.uiTextBox2.TabIndex = 2;
this.uiTextBox2.Text = "0";
this.uiTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiTextBox2.Type = Sunny.UI.UITextBox.UIEditType.Integer;
this.uiTextBox2.Watermark = "";
//
// uiSymbolButton1
//
this.uiSymbolButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiSymbolButton1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton1.Location = new System.Drawing.Point(286, 6);
this.uiSymbolButton1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSymbolButton1.Name = "uiSymbolButton1";
this.uiSymbolButton1.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton1.Symbol = 61442;
this.uiSymbolButton1.TabIndex = 1;
this.uiSymbolButton1.Text = "查找";
this.uiSymbolButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolButton1.Click += new System.EventHandler(this.uiSymbolButton1_Click);
//
// uiLabel1
//
this.uiLabel1.AutoSize = true;
this.uiLabel1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel1.Location = new System.Drawing.Point(19, 15);
this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(103, 16);
this.uiLabel1.TabIndex = 4;
this.uiLabel1.Text = "图标英文名称";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiTextBox1
//
this.uiTextBox1.ButtonSymbol = 361453;
this.uiTextBox1.ButtonSymbolOffset = new System.Drawing.Point(0, 1);
this.uiTextBox1.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTextBox1.Location = new System.Drawing.Point(129, 9);
this.uiTextBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTextBox1.MinimumSize = new System.Drawing.Size(1, 16);
this.uiTextBox1.Name = "uiTextBox1";
this.uiTextBox1.Padding = new System.Windows.Forms.Padding(5);
this.uiTextBox1.ShowButton = true;
this.uiTextBox1.ShowText = false;
this.uiTextBox1.Size = new System.Drawing.Size(150, 29);
this.uiTextBox1.TabIndex = 0;
this.uiTextBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiTextBox1.Watermark = "";
this.uiTextBox1.ButtonClick += new System.EventHandler(this.uiTextBox1_ButtonClick);
this.uiTextBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.uiTextBox1_KeyDown);
//
// uiTabControl1
//
this.uiTabControl1.Alignment = System.Windows.Forms.TabAlignment.Bottom;
this.uiTabControl1.Controls.Add(this.tabPage1);
this.uiTabControl1.Controls.Add(this.tabPage2);
this.uiTabControl1.Controls.Add(this.tabPage3);
this.uiTabControl1.Controls.Add(this.tabPage4);
this.uiTabControl1.Controls.Add(this.tabPage5);
this.uiTabControl1.Controls.Add(this.tabPage6);
this.uiTabControl1.Controls.Add(this.tabPage7);
this.uiTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.uiTabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
this.uiTabControl1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTabControl1.ItemSize = new System.Drawing.Size(115, 40);
this.uiTabControl1.Location = new System.Drawing.Point(0, 81);
this.uiTabControl1.MainPage = "";
this.uiTabControl1.Name = "uiTabControl1";
this.uiTabControl1.SelectedIndex = 0;
this.uiTabControl1.Size = new System.Drawing.Size(1004, 611);
this.uiTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.uiTabControl1.TabIndex = 1;
this.uiTabControl1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
//
// tabPage1
//
this.tabPage1.Controls.Add(this.lpV6Solid);
this.tabPage1.Location = new System.Drawing.Point(0, 0);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Size = new System.Drawing.Size(1004, 571);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "FontAwesome V6";
this.tabPage1.UseVisualStyleBackColor = true;
//
// lpV6Solid
//
this.lpV6Solid.Dock = System.Windows.Forms.DockStyle.Fill;
this.lpV6Solid.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lpV6Solid.Location = new System.Drawing.Point(0, 0);
this.lpV6Solid.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.lpV6Solid.MinimumSize = new System.Drawing.Size(1, 1);
this.lpV6Solid.Name = "lpV6Solid";
this.lpV6Solid.Padding = new System.Windows.Forms.Padding(2);
this.lpV6Solid.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.lpV6Solid.ShowText = false;
this.lpV6Solid.Size = new System.Drawing.Size(1004, 571);
this.lpV6Solid.TabIndex = 0;
this.lpV6Solid.Text = "uiFlowLayoutPanel1";
this.lpV6Solid.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// tabPage2
//
this.tabPage2.Controls.Add(this.lpV6Regular);
this.tabPage2.Location = new System.Drawing.Point(0, 0);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Size = new System.Drawing.Size(200, 60);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "V6 Regular";
this.tabPage2.UseVisualStyleBackColor = true;
//
// lpV6Regular
//
this.lpV6Regular.Dock = System.Windows.Forms.DockStyle.Fill;
this.lpV6Regular.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lpV6Regular.Location = new System.Drawing.Point(0, 0);
this.lpV6Regular.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.lpV6Regular.MinimumSize = new System.Drawing.Size(1, 1);
this.lpV6Regular.Name = "lpV6Regular";
this.lpV6Regular.Padding = new System.Windows.Forms.Padding(2);
this.lpV6Regular.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.lpV6Regular.ShowText = false;
this.lpV6Regular.Size = new System.Drawing.Size(200, 60);
this.lpV6Regular.TabIndex = 1;
this.lpV6Regular.Text = "uiFlowLayoutPanel2";
this.lpV6Regular.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// tabPage3
//
this.tabPage3.Controls.Add(this.lpV6Brands);
this.tabPage3.Location = new System.Drawing.Point(0, 0);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Size = new System.Drawing.Size(200, 60);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "V6 Brands";
this.tabPage3.UseVisualStyleBackColor = true;
//
// lpV6Brands
//
this.lpV6Brands.Dock = System.Windows.Forms.DockStyle.Fill;
this.lpV6Brands.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lpV6Brands.Location = new System.Drawing.Point(0, 0);
this.lpV6Brands.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.lpV6Brands.MinimumSize = new System.Drawing.Size(1, 1);
this.lpV6Brands.Name = "lpV6Brands";
this.lpV6Brands.Padding = new System.Windows.Forms.Padding(2);
this.lpV6Brands.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.lpV6Brands.ShowText = false;
this.lpV6Brands.Size = new System.Drawing.Size(200, 60);
this.lpV6Brands.TabIndex = 1;
this.lpV6Brands.Text = "uiFlowLayoutPanel3";
this.lpV6Brands.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// tabPage4
//
this.tabPage4.Controls.Add(this.lpAwesome);
this.tabPage4.Location = new System.Drawing.Point(0, 0);
this.tabPage4.Name = "tabPage4";
this.tabPage4.Size = new System.Drawing.Size(200, 60);
this.tabPage4.TabIndex = 3;
this.tabPage4.Text = "FontAwesome V4";
this.tabPage4.UseVisualStyleBackColor = true;
//
// lpAwesome
//
this.lpAwesome.Dock = System.Windows.Forms.DockStyle.Fill;
this.lpAwesome.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lpAwesome.Location = new System.Drawing.Point(0, 0);
this.lpAwesome.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.lpAwesome.MinimumSize = new System.Drawing.Size(1, 1);
this.lpAwesome.Name = "lpAwesome";
this.lpAwesome.Padding = new System.Windows.Forms.Padding(2);
this.lpAwesome.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.lpAwesome.ShowText = false;
this.lpAwesome.Size = new System.Drawing.Size(200, 60);
this.lpAwesome.TabIndex = 1;
this.lpAwesome.Text = "uiFlowLayoutPanel4";
this.lpAwesome.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// tabPage5
//
this.tabPage5.Controls.Add(this.lpElegant);
this.tabPage5.Location = new System.Drawing.Point(0, 0);
this.tabPage5.Name = "tabPage5";
this.tabPage5.Size = new System.Drawing.Size(200, 60);
this.tabPage5.TabIndex = 4;
this.tabPage5.Text = "ElegantIcons";
this.tabPage5.UseVisualStyleBackColor = true;
//
// lpElegant
//
this.lpElegant.Dock = System.Windows.Forms.DockStyle.Fill;
this.lpElegant.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lpElegant.Location = new System.Drawing.Point(0, 0);
this.lpElegant.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.lpElegant.MinimumSize = new System.Drawing.Size(1, 1);
this.lpElegant.Name = "lpElegant";
this.lpElegant.Padding = new System.Windows.Forms.Padding(2);
this.lpElegant.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.lpElegant.ShowText = false;
this.lpElegant.Size = new System.Drawing.Size(200, 60);
this.lpElegant.TabIndex = 1;
this.lpElegant.Text = "uiFlowLayoutPanel5";
this.lpElegant.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// tabPage6
//
this.tabPage6.Controls.Add(this.lpMaterialIcons);
this.tabPage6.Location = new System.Drawing.Point(0, 0);
this.tabPage6.Name = "tabPage6";
this.tabPage6.Size = new System.Drawing.Size(200, 60);
this.tabPage6.TabIndex = 5;
this.tabPage6.Text = "MaterialIcons";
this.tabPage6.UseVisualStyleBackColor = true;
//
// lpMaterialIcons
//
this.lpMaterialIcons.Dock = System.Windows.Forms.DockStyle.Fill;
this.lpMaterialIcons.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lpMaterialIcons.Location = new System.Drawing.Point(0, 0);
this.lpMaterialIcons.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.lpMaterialIcons.MinimumSize = new System.Drawing.Size(1, 1);
this.lpMaterialIcons.Name = "lpMaterialIcons";
this.lpMaterialIcons.Padding = new System.Windows.Forms.Padding(2);
this.lpMaterialIcons.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.lpMaterialIcons.ShowText = false;
this.lpMaterialIcons.Size = new System.Drawing.Size(200, 60);
this.lpMaterialIcons.TabIndex = 1;
this.lpMaterialIcons.Text = "uiFlowLayoutPanel6";
this.lpMaterialIcons.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// tabPage7
//
this.tabPage7.Controls.Add(this.lblResult);
this.tabPage7.Location = new System.Drawing.Point(0, 0);
this.tabPage7.Name = "tabPage7";
this.tabPage7.Size = new System.Drawing.Size(200, 60);
this.tabPage7.TabIndex = 6;
this.tabPage7.Text = "查找结果";
this.tabPage7.UseVisualStyleBackColor = true;
//
// lblResult
//
this.lblResult.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblResult.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblResult.Location = new System.Drawing.Point(0, 0);
this.lblResult.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.lblResult.MinimumSize = new System.Drawing.Size(1, 1);
this.lblResult.Name = "lblResult";
this.lblResult.Padding = new System.Windows.Forms.Padding(2);
this.lblResult.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.lblResult.ShowText = false;
this.lblResult.Size = new System.Drawing.Size(200, 60);
this.lblResult.TabIndex = 1;
this.lblResult.Text = "uiFlowLayoutPanel7";
this.lblResult.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// FSymbols
//
this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1004, 692);
this.Controls.Add(this.uiTabControl1);
this.Controls.Add(this.uiPanel1);
this.Name = "FSymbols";
this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0);
this.PageIndex = 99999;
this.ShowTitle = true;
this.Symbol = 558426;
this.Text = "字体图标";
this.Shown += new System.EventHandler(this.FSymbols_Shown);
this.uiPanel1.ResumeLayout(false);
this.uiPanel1.PerformLayout();
this.uiTabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage2.ResumeLayout(false);
this.tabPage3.ResumeLayout(false);
this.tabPage4.ResumeLayout(false);
this.tabPage5.ResumeLayout(false);
this.tabPage6.ResumeLayout(false);
this.tabPage7.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UIPanel uiPanel1;
private UISymbolButton uiSymbolButton1;
private UILabel uiLabel1;
private UITextBox uiTextBox1;
private UITabControl uiTabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.TabPage tabPage3;
private System.Windows.Forms.TabPage tabPage4;
private System.Windows.Forms.TabPage tabPage5;
private System.Windows.Forms.TabPage tabPage6;
private System.Windows.Forms.TabPage tabPage7;
private UIFlowLayoutPanel lpV6Solid;
private UIFlowLayoutPanel lpV6Regular;
private UIFlowLayoutPanel lpV6Brands;
private UIFlowLayoutPanel lpAwesome;
private UIFlowLayoutPanel lpElegant;
private UIFlowLayoutPanel lpMaterialIcons;
private UIFlowLayoutPanel lblResult;
private UISymbolButton uiSymbolButton2;
private UITextBox uiTextBox2;
private UISymbolLabel uiSymbolLabel1;
}
}

View File

@ -0,0 +1,142 @@
using System.Windows.Forms;
namespace Sunny.UI.Demo
{
public partial class FSymbols : UIPage
{
private UISymbolPanel fontAwesomeV4;
private UISymbolPanel elegantIcons;
private UISymbolPanel fontAweSomeV6Regular;
private UISymbolPanel fontAweSomeV6Solid;
private UISymbolPanel fontAweSomeV6Brands;
private UISymbolPanel materialIcons;
private UISymbolPanel searchSymbolPanel;
public FSymbols()
{
InitializeComponent();
fontAwesomeV4 = new UISymbolPanel(typeof(FontAwesomeIcons), UISymbolType.FontAwesomeV4);
elegantIcons = new UISymbolPanel(typeof(FontElegantIcons), UISymbolType.FontAwesomeV4);
fontAweSomeV6Regular = new UISymbolPanel(typeof(FontAweSomeV6Regular), UISymbolType.FontAwesomeV6Regular);
fontAweSomeV6Solid = new UISymbolPanel(typeof(FontAweSomeV6Solid), UISymbolType.FontAwesomeV6Solid);
fontAweSomeV6Brands = new UISymbolPanel(typeof(FontAweSomeV6Brands), UISymbolType.FontAwesomeV6Brands);
materialIcons = new UISymbolPanel(typeof(MaterialIcons), UISymbolType.MaterialIcons);
searchSymbolPanel = new UISymbolPanel();
lpV6Solid.Add(fontAweSomeV6Solid);
lpV6Regular.Add(fontAweSomeV6Regular);
lpV6Brands.Add(fontAweSomeV6Brands);
lpElegant.Add(elegantIcons);
lpMaterialIcons.Add(materialIcons);
lblResult.Add(searchSymbolPanel);
lpAwesome.Add(fontAwesomeV4);
fontAwesomeV4.ValueChanged += CustomSymbolPanel_ValueChanged;
elegantIcons.ValueChanged += CustomSymbolPanel_ValueChanged;
fontAweSomeV6Brands.ValueChanged += CustomSymbolPanel_ValueChanged;
fontAweSomeV6Regular.ValueChanged += CustomSymbolPanel_ValueChanged;
fontAweSomeV6Solid.ValueChanged += CustomSymbolPanel_ValueChanged;
materialIcons.ValueChanged += CustomSymbolPanel_ValueChanged;
searchSymbolPanel.ValueChanged += CustomSymbolPanel_ValueChanged;
}
private void CustomSymbolPanel_ValueChanged(object sender, SymbolValue symbol)
{
uiTextBox2.IntValue = symbol.Value;
uiSymbolLabel1.Symbol = symbol.Value;
this.ShowInfoTip(symbol.ToString());
}
private void uiSymbolButton1_Click(object sender, System.EventArgs e)
{
string filter = uiTextBox1.Text.Trim();
fontAwesomeV4.Filter = filter;
elegantIcons.Filter = filter;
fontAweSomeV6Regular.Filter = filter;
fontAweSomeV6Solid.Filter = filter;
fontAweSomeV6Brands.Filter = filter;
materialIcons.Filter = filter;
searchSymbolPanel.Clear();
if (filter.IsNullOrEmpty()) return;
for (int i = 0; i < fontAwesomeV4.SymbolCount; i++)
{
var value = fontAwesomeV4.Get(i);
if (value.Name.ToUpper().Contains(filter.ToUpper()))
searchSymbolPanel.Add(value);
}
for (int i = 0; i < elegantIcons.SymbolCount; i++)
{
var value = elegantIcons.Get(i);
if (value.Name.ToUpper().Contains(filter.ToUpper()))
searchSymbolPanel.Add(value);
}
for (int i = 0; i < fontAweSomeV6Regular.SymbolCount; i++)
{
var value = fontAweSomeV6Regular.Get(i);
if (value.Name.ToUpper().Contains(filter.ToUpper()))
searchSymbolPanel.Add(value);
}
for (int i = 0; i < fontAweSomeV6Solid.SymbolCount; i++)
{
var value = fontAweSomeV6Solid.Get(i);
if (value.Name.ToUpper().Contains(filter.ToUpper()))
searchSymbolPanel.Add(value);
}
for (int i = 0; i < fontAweSomeV6Brands.SymbolCount; i++)
{
var value = fontAweSomeV6Brands.Get(i);
if (value.Name.ToUpper().Contains(filter.ToUpper()))
searchSymbolPanel.Add(value);
}
for (int i = 0; i < materialIcons.SymbolCount; i++)
{
var value = materialIcons.Get(i);
if (value.Name.ToUpper().Contains(filter.ToUpper()))
searchSymbolPanel.Add(value);
}
searchSymbolPanel.Invalidate();
uiTabControl1.SelectedTab = tabPage7;
}
private void FSymbols_Shown(object sender, System.EventArgs e)
{
uiTabControl1.SelectedTab = tabPage1;
uiTextBox1.Focus();
}
public override void Init()
{
base.Init();
uiTextBox1.Focus();
searchSymbolPanel.Clear();
}
private void uiSymbolButton2_Click(object sender, System.EventArgs e)
{
Clipboard.SetText(uiTextBox2.Text);
}
private void uiTextBox1_ButtonClick(object sender, System.EventArgs e)
{
uiTextBox1.Text = "";
uiSymbolButton1.PerformClick();
uiTabControl1.SelectedTab = tabPage1;
}
private void uiTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
uiSymbolButton1.PerformClick();
}
}
}
}

View File

@ -50,16 +50,19 @@ namespace Sunny.UI.Demo
this.uiLine3 = new Sunny.UI.UILine(); this.uiLine3 = new Sunny.UI.UILine();
this.uiSignal1 = new Sunny.UI.UISignal(); this.uiSignal1 = new Sunny.UI.UISignal();
this.uiLedLabel4 = new Sunny.UI.UILedLabel(); this.uiLedLabel4 = new Sunny.UI.UILedLabel();
this.uiLedLabel3 = new Sunny.UI.UILedLabel();
this.uiLedLabel2 = new Sunny.UI.UILedLabel(); this.uiLedLabel2 = new Sunny.UI.UILedLabel();
this.uiLedLabel1 = new Sunny.UI.UILedLabel(); this.uiLedLabel1 = new Sunny.UI.UILedLabel();
this.uiLedLabel = new Sunny.UI.UILine(); this.uiLedLabel = new Sunny.UI.UILine();
this.uiDigitalLabel2 = new Sunny.UI.UIDigitalLabel();
this.uiDigitalLabel1 = new Sunny.UI.UIDigitalLabel();
this.uiLine4 = new Sunny.UI.UILine();
this.uiBattery7 = new Sunny.UI.UIBattery();
this.SuspendLayout(); this.SuspendLayout();
// //
// uiBattery6 // uiBattery6
// //
this.uiBattery6.Font = new System.Drawing.Font("宋体", 12F); this.uiBattery6.Font = new System.Drawing.Font("宋体", 12F);
this.uiBattery6.Location = new System.Drawing.Point(301, 269); this.uiBattery6.Location = new System.Drawing.Point(301, 364);
this.uiBattery6.MinimumSize = new System.Drawing.Size(1, 1); this.uiBattery6.MinimumSize = new System.Drawing.Size(1, 1);
this.uiBattery6.Name = "uiBattery6"; this.uiBattery6.Name = "uiBattery6";
this.uiBattery6.Size = new System.Drawing.Size(48, 24); this.uiBattery6.Size = new System.Drawing.Size(48, 24);
@ -69,7 +72,7 @@ namespace Sunny.UI.Demo
// uiBattery5 // uiBattery5
// //
this.uiBattery5.Font = new System.Drawing.Font("宋体", 12F); this.uiBattery5.Font = new System.Drawing.Font("宋体", 12F);
this.uiBattery5.Location = new System.Drawing.Point(246, 269); this.uiBattery5.Location = new System.Drawing.Point(246, 364);
this.uiBattery5.MinimumSize = new System.Drawing.Size(1, 1); this.uiBattery5.MinimumSize = new System.Drawing.Size(1, 1);
this.uiBattery5.Name = "uiBattery5"; this.uiBattery5.Name = "uiBattery5";
this.uiBattery5.Power = 75; this.uiBattery5.Power = 75;
@ -80,7 +83,7 @@ namespace Sunny.UI.Demo
// uiBattery4 // uiBattery4
// //
this.uiBattery4.Font = new System.Drawing.Font("宋体", 12F); this.uiBattery4.Font = new System.Drawing.Font("宋体", 12F);
this.uiBattery4.Location = new System.Drawing.Point(192, 269); this.uiBattery4.Location = new System.Drawing.Point(192, 364);
this.uiBattery4.MinimumSize = new System.Drawing.Size(1, 1); this.uiBattery4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiBattery4.Name = "uiBattery4"; this.uiBattery4.Name = "uiBattery4";
this.uiBattery4.Power = 50; this.uiBattery4.Power = 50;
@ -91,7 +94,7 @@ namespace Sunny.UI.Demo
// uiBattery3 // uiBattery3
// //
this.uiBattery3.Font = new System.Drawing.Font("宋体", 12F); this.uiBattery3.Font = new System.Drawing.Font("宋体", 12F);
this.uiBattery3.Location = new System.Drawing.Point(138, 269); this.uiBattery3.Location = new System.Drawing.Point(138, 364);
this.uiBattery3.MinimumSize = new System.Drawing.Size(1, 1); this.uiBattery3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiBattery3.Name = "uiBattery3"; this.uiBattery3.Name = "uiBattery3";
this.uiBattery3.Power = 25; this.uiBattery3.Power = 25;
@ -102,7 +105,7 @@ namespace Sunny.UI.Demo
// uiBattery2 // uiBattery2
// //
this.uiBattery2.Font = new System.Drawing.Font("宋体", 12F); this.uiBattery2.Font = new System.Drawing.Font("宋体", 12F);
this.uiBattery2.Location = new System.Drawing.Point(84, 269); this.uiBattery2.Location = new System.Drawing.Point(84, 364);
this.uiBattery2.MinimumSize = new System.Drawing.Size(1, 1); this.uiBattery2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiBattery2.Name = "uiBattery2"; this.uiBattery2.Name = "uiBattery2";
this.uiBattery2.Power = 1; this.uiBattery2.Power = 1;
@ -113,7 +116,7 @@ namespace Sunny.UI.Demo
// uiBattery1 // uiBattery1
// //
this.uiBattery1.Font = new System.Drawing.Font("宋体", 12F); this.uiBattery1.Font = new System.Drawing.Font("宋体", 12F);
this.uiBattery1.Location = new System.Drawing.Point(30, 269); this.uiBattery1.Location = new System.Drawing.Point(30, 364);
this.uiBattery1.MinimumSize = new System.Drawing.Size(1, 1); this.uiBattery1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiBattery1.Name = "uiBattery1"; this.uiBattery1.Name = "uiBattery1";
this.uiBattery1.Size = new System.Drawing.Size(48, 24); this.uiBattery1.Size = new System.Drawing.Size(48, 24);
@ -122,8 +125,10 @@ namespace Sunny.UI.Demo
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.Location = new System.Drawing.Point(30, 233); this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(30, 328);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(319, 20); this.uiLine2.Size = new System.Drawing.Size(319, 20);
@ -133,7 +138,9 @@ namespace Sunny.UI.Demo
// //
// uiLine7 // uiLine7
// //
this.uiLine7.BackColor = System.Drawing.Color.Transparent;
this.uiLine7.Font = new System.Drawing.Font("宋体", 12F); this.uiLine7.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine7.Location = new System.Drawing.Point(381, 55); this.uiLine7.Location = new System.Drawing.Point(381, 55);
this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine7.Name = "uiLine7"; this.uiLine7.Name = "uiLine7";
@ -144,7 +151,9 @@ namespace Sunny.UI.Demo
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(30, 55); this.uiLine1.Location = new System.Drawing.Point(30, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
@ -162,7 +171,7 @@ namespace Sunny.UI.Demo
this.uiLedStopwatch1.Name = "uiLedStopwatch1"; this.uiLedStopwatch1.Name = "uiLedStopwatch1";
this.uiLedStopwatch1.Size = new System.Drawing.Size(190, 34); this.uiLedStopwatch1.Size = new System.Drawing.Size(190, 34);
this.uiLedStopwatch1.TabIndex = 61; this.uiLedStopwatch1.TabIndex = 61;
this.uiLedStopwatch1.Text = "00:06"; this.uiLedStopwatch1.Text = "01:05";
// //
// uiLedDisplay1 // uiLedDisplay1
// //
@ -181,7 +190,7 @@ namespace Sunny.UI.Demo
// uiSignal6 // uiSignal6
// //
this.uiSignal6.Font = new System.Drawing.Font("宋体", 12F); this.uiSignal6.Font = new System.Drawing.Font("宋体", 12F);
this.uiSignal6.Location = new System.Drawing.Point(591, 259); this.uiSignal6.Location = new System.Drawing.Point(591, 354);
this.uiSignal6.MinimumSize = new System.Drawing.Size(1, 1); this.uiSignal6.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSignal6.Name = "uiSignal6"; this.uiSignal6.Name = "uiSignal6";
this.uiSignal6.Size = new System.Drawing.Size(35, 35); this.uiSignal6.Size = new System.Drawing.Size(35, 35);
@ -192,7 +201,7 @@ namespace Sunny.UI.Demo
// //
this.uiSignal5.Font = new System.Drawing.Font("宋体", 12F); this.uiSignal5.Font = new System.Drawing.Font("宋体", 12F);
this.uiSignal5.Level = 4; this.uiSignal5.Level = 4;
this.uiSignal5.Location = new System.Drawing.Point(550, 259); this.uiSignal5.Location = new System.Drawing.Point(550, 354);
this.uiSignal5.MinimumSize = new System.Drawing.Size(1, 1); this.uiSignal5.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSignal5.Name = "uiSignal5"; this.uiSignal5.Name = "uiSignal5";
this.uiSignal5.Size = new System.Drawing.Size(35, 35); this.uiSignal5.Size = new System.Drawing.Size(35, 35);
@ -203,7 +212,7 @@ namespace Sunny.UI.Demo
// //
this.uiSignal4.Font = new System.Drawing.Font("宋体", 12F); this.uiSignal4.Font = new System.Drawing.Font("宋体", 12F);
this.uiSignal4.Level = 3; this.uiSignal4.Level = 3;
this.uiSignal4.Location = new System.Drawing.Point(509, 259); this.uiSignal4.Location = new System.Drawing.Point(509, 354);
this.uiSignal4.MinimumSize = new System.Drawing.Size(1, 1); this.uiSignal4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSignal4.Name = "uiSignal4"; this.uiSignal4.Name = "uiSignal4";
this.uiSignal4.Size = new System.Drawing.Size(35, 35); this.uiSignal4.Size = new System.Drawing.Size(35, 35);
@ -214,7 +223,7 @@ namespace Sunny.UI.Demo
// //
this.uiSignal3.Font = new System.Drawing.Font("宋体", 12F); this.uiSignal3.Font = new System.Drawing.Font("宋体", 12F);
this.uiSignal3.Level = 2; this.uiSignal3.Level = 2;
this.uiSignal3.Location = new System.Drawing.Point(468, 259); this.uiSignal3.Location = new System.Drawing.Point(468, 354);
this.uiSignal3.MinimumSize = new System.Drawing.Size(1, 1); this.uiSignal3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSignal3.Name = "uiSignal3"; this.uiSignal3.Name = "uiSignal3";
this.uiSignal3.Size = new System.Drawing.Size(35, 35); this.uiSignal3.Size = new System.Drawing.Size(35, 35);
@ -225,7 +234,7 @@ namespace Sunny.UI.Demo
// //
this.uiSignal2.Font = new System.Drawing.Font("宋体", 12F); this.uiSignal2.Font = new System.Drawing.Font("宋体", 12F);
this.uiSignal2.Level = 1; this.uiSignal2.Level = 1;
this.uiSignal2.Location = new System.Drawing.Point(427, 259); this.uiSignal2.Location = new System.Drawing.Point(427, 354);
this.uiSignal2.MinimumSize = new System.Drawing.Size(1, 1); this.uiSignal2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSignal2.Name = "uiSignal2"; this.uiSignal2.Name = "uiSignal2";
this.uiSignal2.Size = new System.Drawing.Size(35, 35); this.uiSignal2.Size = new System.Drawing.Size(35, 35);
@ -234,8 +243,10 @@ namespace Sunny.UI.Demo
// //
// uiLine3 // uiLine3
// //
this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F); this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine3.Location = new System.Drawing.Point(381, 233); this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(381, 328);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3"; this.uiLine3.Name = "uiLine3";
this.uiLine3.Size = new System.Drawing.Size(319, 20); this.uiLine3.Size = new System.Drawing.Size(319, 20);
@ -247,7 +258,7 @@ namespace Sunny.UI.Demo
// //
this.uiSignal1.Font = new System.Drawing.Font("宋体", 12F); this.uiSignal1.Font = new System.Drawing.Font("宋体", 12F);
this.uiSignal1.Level = 0; this.uiSignal1.Level = 0;
this.uiSignal1.Location = new System.Drawing.Point(386, 259); this.uiSignal1.Location = new System.Drawing.Point(386, 354);
this.uiSignal1.MinimumSize = new System.Drawing.Size(1, 1); this.uiSignal1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiSignal1.Name = "uiSignal1"; this.uiSignal1.Name = "uiSignal1";
this.uiSignal1.Size = new System.Drawing.Size(35, 35); this.uiSignal1.Size = new System.Drawing.Size(35, 35);
@ -260,7 +271,7 @@ namespace Sunny.UI.Demo
this.uiLedLabel4.Font = new System.Drawing.Font("宋体", 12F); this.uiLedLabel4.Font = new System.Drawing.Font("宋体", 12F);
this.uiLedLabel4.ForeColor = System.Drawing.Color.Lime; this.uiLedLabel4.ForeColor = System.Drawing.Color.Lime;
this.uiLedLabel4.IntervalOn = 3; this.uiLedLabel4.IntervalOn = 3;
this.uiLedLabel4.Location = new System.Drawing.Point(517, 175); this.uiLedLabel4.Location = new System.Drawing.Point(395, 175);
this.uiLedLabel4.MinimumSize = new System.Drawing.Size(1, 1); this.uiLedLabel4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiLedLabel4.Name = "uiLedLabel4"; this.uiLedLabel4.Name = "uiLedLabel4";
this.uiLedLabel4.Size = new System.Drawing.Size(181, 35); this.uiLedLabel4.Size = new System.Drawing.Size(181, 35);
@ -269,18 +280,6 @@ namespace Sunny.UI.Demo
this.uiLedLabel4.TabIndex = 98; this.uiLedLabel4.TabIndex = 98;
this.uiLedLabel4.Text = "36.1°C"; this.uiLedLabel4.Text = "36.1°C";
// //
// uiLedLabel3
//
this.uiLedLabel3.Font = new System.Drawing.Font("宋体", 12F);
this.uiLedLabel3.IntervalOn = 3;
this.uiLedLabel3.Location = new System.Drawing.Point(336, 175);
this.uiLedLabel3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiLedLabel3.Name = "uiLedLabel3";
this.uiLedLabel3.Size = new System.Drawing.Size(150, 35);
this.uiLedLabel3.TabIndex = 97;
this.uiLedLabel3.Text = "999.99";
this.uiLedLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLedLabel2 // uiLedLabel2
// //
this.uiLedLabel2.Font = new System.Drawing.Font("宋体", 12F); this.uiLedLabel2.Font = new System.Drawing.Font("宋体", 12F);
@ -289,7 +288,7 @@ namespace Sunny.UI.Demo
this.uiLedLabel2.MinimumSize = new System.Drawing.Size(1, 1); this.uiLedLabel2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiLedLabel2.Name = "uiLedLabel2"; this.uiLedLabel2.Name = "uiLedLabel2";
this.uiLedLabel2.Size = new System.Drawing.Size(116, 35); this.uiLedLabel2.Size = new System.Drawing.Size(116, 35);
this.uiLedLabel2.Style = Sunny.UI.UIStyle.Red; this.uiLedLabel2.Style = Sunny.UI.UIStyle.Custom;
this.uiLedLabel2.StyleCustomMode = true; this.uiLedLabel2.StyleCustomMode = true;
this.uiLedLabel2.TabIndex = 96; this.uiLedLabel2.TabIndex = 96;
this.uiLedLabel2.Text = "999.99"; this.uiLedLabel2.Text = "999.99";
@ -308,7 +307,9 @@ namespace Sunny.UI.Demo
// //
// uiLedLabel // uiLedLabel
// //
this.uiLedLabel.BackColor = System.Drawing.Color.Transparent;
this.uiLedLabel.Font = new System.Drawing.Font("宋体", 12F); this.uiLedLabel.Font = new System.Drawing.Font("宋体", 12F);
this.uiLedLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLedLabel.Location = new System.Drawing.Point(30, 139); this.uiLedLabel.Location = new System.Drawing.Point(30, 139);
this.uiLedLabel.MinimumSize = new System.Drawing.Size(16, 16); this.uiLedLabel.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLedLabel.Name = "uiLedLabel"; this.uiLedLabel.Name = "uiLedLabel";
@ -317,13 +318,71 @@ namespace Sunny.UI.Demo
this.uiLedLabel.Text = "UILedLabel (仅支持英文、标点符号、希腊字母)"; this.uiLedLabel.Text = "UILedLabel (仅支持英文、标点符号、希腊字母)";
this.uiLedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// uiDigitalLabel2
//
this.uiDigitalLabel2.BackColor = System.Drawing.Color.Black;
this.uiDigitalLabel2.DecimalPlaces = 1;
this.uiDigitalLabel2.DigitalSize = 20;
this.uiDigitalLabel2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiDigitalLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(192)))));
this.uiDigitalLabel2.Location = new System.Drawing.Point(395, 269);
this.uiDigitalLabel2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiDigitalLabel2.Name = "uiDigitalLabel2";
this.uiDigitalLabel2.Size = new System.Drawing.Size(208, 38);
this.uiDigitalLabel2.TabIndex = 108;
this.uiDigitalLabel2.Text = "uiDigitalLabel2";
this.uiDigitalLabel2.Value = 6789.9D;
//
// uiDigitalLabel1
//
this.uiDigitalLabel1.BackColor = System.Drawing.Color.Black;
this.uiDigitalLabel1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiDigitalLabel1.ForeColor = System.Drawing.Color.Lime;
this.uiDigitalLabel1.Location = new System.Drawing.Point(42, 269);
this.uiDigitalLabel1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiDigitalLabel1.Name = "uiDigitalLabel1";
this.uiDigitalLabel1.Size = new System.Drawing.Size(208, 42);
this.uiDigitalLabel1.TabIndex = 107;
this.uiDigitalLabel1.Text = "uiDigitalLabel1";
this.uiDigitalLabel1.TextOffset = new System.Drawing.Point(6, 0);
this.uiDigitalLabel1.Value = -123.45D;
//
// uiLine4
//
this.uiLine4.BackColor = System.Drawing.Color.Transparent;
this.uiLine4.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine4.Location = new System.Drawing.Point(30, 229);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4";
this.uiLine4.Size = new System.Drawing.Size(668, 20);
this.uiLine4.TabIndex = 109;
this.uiLine4.Text = "UIDigitalLabel";
this.uiLine4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiBattery7
//
this.uiBattery7.Font = new System.Drawing.Font("宋体", 12F);
this.uiBattery7.Location = new System.Drawing.Point(42, 410);
this.uiBattery7.MinimumSize = new System.Drawing.Size(1, 1);
this.uiBattery7.Name = "uiBattery7";
this.uiBattery7.Size = new System.Drawing.Size(73, 105);
this.uiBattery7.SymbolOffset = new System.Drawing.Point(1, 3);
this.uiBattery7.SymbolRotate = 270;
this.uiBattery7.SymbolSize = 100;
this.uiBattery7.TabIndex = 110;
this.uiBattery7.Text = "uiBattery7";
//
// FLed // FLed
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 450); this.ClientSize = new System.Drawing.Size(800, 555);
this.Controls.Add(this.uiBattery7);
this.Controls.Add(this.uiLine4);
this.Controls.Add(this.uiDigitalLabel2);
this.Controls.Add(this.uiDigitalLabel1);
this.Controls.Add(this.uiLedLabel4); this.Controls.Add(this.uiLedLabel4);
this.Controls.Add(this.uiLedLabel3);
this.Controls.Add(this.uiLedLabel2); this.Controls.Add(this.uiLedLabel2);
this.Controls.Add(this.uiLedLabel1); this.Controls.Add(this.uiLedLabel1);
this.Controls.Add(this.uiLedLabel); this.Controls.Add(this.uiLedLabel);
@ -376,9 +435,12 @@ namespace Sunny.UI.Demo
private UILine uiLine3; private UILine uiLine3;
private UISignal uiSignal1; private UISignal uiSignal1;
private UILedLabel uiLedLabel4; private UILedLabel uiLedLabel4;
private UILedLabel uiLedLabel3;
private UILedLabel uiLedLabel2; private UILedLabel uiLedLabel2;
private UILedLabel uiLedLabel1; private UILedLabel uiLedLabel1;
private UILine uiLedLabel; private UILine uiLedLabel;
private UIDigitalLabel uiDigitalLabel2;
private UIDigitalLabel uiDigitalLabel1;
private UILine uiLine4;
private UIBattery uiBattery7;
} }
} }

View File

@ -19,8 +19,9 @@
private void timer1_Tick(object sender, System.EventArgs e) private void timer1_Tick(object sender, System.EventArgs e)
{ {
value++; value++;
uiBattery1.Power = value; uiBattery7.Power = uiBattery1.Power = value;
uiLedDisplay1.Text = value + " Ω"; uiLedDisplay1.Text = value + " Ω";
uiDigitalLabel2.Value += 0.1;
} }
} }
} }

View File

@ -45,6 +45,12 @@ namespace Sunny.UI.Demo
this.uiLedBulb6 = new Sunny.UI.UILedBulb(); this.uiLedBulb6 = new Sunny.UI.UILedBulb();
this.uiLight5 = new Sunny.UI.UILight(); this.uiLight5 = new Sunny.UI.UILight();
this.uiLight6 = new Sunny.UI.UILight(); this.uiLight6 = new Sunny.UI.UILight();
this.uiStatusBox1 = new Sunny.UI.UIStatusBox();
this.uiLine1 = new Sunny.UI.UILine();
this.uiButton1 = new Sunny.UI.UIButton();
this.uiButton2 = new Sunny.UI.UIButton();
this.uiButton3 = new Sunny.UI.UIButton();
((System.ComponentModel.ISupportInitialize)(this.uiStatusBox1)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// uiLedBulb4 // uiLedBulb4
@ -78,7 +84,9 @@ namespace Sunny.UI.Demo
// //
// uiLine8 // uiLine8
// //
this.uiLine8.BackColor = System.Drawing.Color.Transparent;
this.uiLine8.Font = new System.Drawing.Font("宋体", 12F); this.uiLine8.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine8.Location = new System.Drawing.Point(381, 55); this.uiLine8.Location = new System.Drawing.Point(381, 55);
this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine8.Name = "uiLine8"; this.uiLine8.Name = "uiLine8";
@ -144,7 +152,9 @@ namespace Sunny.UI.Demo
// //
// uiLine2 // uiLine2
// //
this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine2.Location = new System.Drawing.Point(30, 55); this.uiLine2.Location = new System.Drawing.Point(30, 55);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2"; this.uiLine2.Name = "uiLine2";
@ -223,11 +233,113 @@ namespace Sunny.UI.Demo
this.uiLight6.TabIndex = 75; this.uiLight6.TabIndex = 75;
this.uiLight6.Text = "uiLight6"; this.uiLight6.Text = "uiLight6";
// //
// uiStatusBox1
//
this.uiStatusBox1.Image = global::Sunny.UI.Demo.Properties.Resources.led_g;
this.uiStatusBox1.Location = new System.Drawing.Point(30, 272);
this.uiStatusBox1.Name = "uiStatusBox1";
this.uiStatusBox1.Size = new System.Drawing.Size(36, 36);
this.uiStatusBox1.Status1 = global::Sunny.UI.Demo.Properties.Resources.led_g;
this.uiStatusBox1.Status2 = global::Sunny.UI.Demo.Properties.Resources.led_y;
this.uiStatusBox1.Status3 = global::Sunny.UI.Demo.Properties.Resources.led_r;
this.uiStatusBox1.TabIndex = 77;
this.uiStatusBox1.TabStop = false;
//
// uiLine1
//
this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.Location = new System.Drawing.Point(30, 230);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(319, 20);
this.uiLine1.TabIndex = 79;
this.uiLine1.Text = "UILight";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiButton1
//
this.uiButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.uiButton1.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.uiButton1.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(139)))), ((int)(((byte)(203)))), ((int)(((byte)(83)))));
this.uiButton1.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton1.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton1.LightColor = System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(251)))), ((int)(((byte)(241)))));
this.uiButton1.Location = new System.Drawing.Point(78, 273);
this.uiButton1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton1.Name = "uiButton1";
this.uiButton1.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.uiButton1.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(139)))), ((int)(((byte)(203)))), ((int)(((byte)(83)))));
this.uiButton1.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton1.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton1.Size = new System.Drawing.Size(75, 35);
this.uiButton1.Style = Sunny.UI.UIStyle.Custom;
this.uiButton1.TabIndex = 80;
this.uiButton1.Text = "切换";
this.uiButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click);
//
// uiButton2
//
this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiButton2.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiButton2.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(175)))), ((int)(((byte)(83)))));
this.uiButton2.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton2.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton2.LightColor = System.Drawing.Color.FromArgb(((int)(((byte)(253)))), ((int)(((byte)(249)))), ((int)(((byte)(241)))));
this.uiButton2.Location = new System.Drawing.Point(159, 273);
this.uiButton2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton2.Name = "uiButton2";
this.uiButton2.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiButton2.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(175)))), ((int)(((byte)(83)))));
this.uiButton2.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton2.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton2.Size = new System.Drawing.Size(75, 35);
this.uiButton2.Style = Sunny.UI.UIStyle.Custom;
this.uiButton2.TabIndex = 81;
this.uiButton2.Text = "切换";
this.uiButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton2.Click += new System.EventHandler(this.uiButton2_Click);
//
// uiButton3
//
this.uiButton3.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.uiButton3.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.uiButton3.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(115)))), ((int)(((byte)(115)))));
this.uiButton3.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton3.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton3.LightColor = System.Drawing.Color.FromArgb(((int)(((byte)(253)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
this.uiButton3.Location = new System.Drawing.Point(240, 273);
this.uiButton3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton3.Name = "uiButton3";
this.uiButton3.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.uiButton3.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(115)))), ((int)(((byte)(115)))));
this.uiButton3.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton3.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton3.Size = new System.Drawing.Size(75, 35);
this.uiButton3.Style = Sunny.UI.UIStyle.Custom;
this.uiButton3.TabIndex = 82;
this.uiButton3.Text = "切换";
this.uiButton3.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton3.Click += new System.EventHandler(this.uiButton3_Click);
//
// FLight // FLight
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 450); this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.uiButton3);
this.Controls.Add(this.uiButton2);
this.Controls.Add(this.uiButton1);
this.Controls.Add(this.uiLine1);
this.Controls.Add(this.uiStatusBox1);
this.Controls.Add(this.uiLight5); this.Controls.Add(this.uiLight5);
this.Controls.Add(this.uiLight6); this.Controls.Add(this.uiLight6);
this.Controls.Add(this.uiLedBulb5); this.Controls.Add(this.uiLedBulb5);
@ -247,6 +359,7 @@ namespace Sunny.UI.Demo
this.ShowTitle = true; this.ShowTitle = true;
this.Symbol = 362751; this.Symbol = 362751;
this.Text = "Light"; this.Text = "Light";
((System.ComponentModel.ISupportInitialize)(this.uiStatusBox1)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@ -267,5 +380,10 @@ namespace Sunny.UI.Demo
private UILedBulb uiLedBulb6; private UILedBulb uiLedBulb6;
private UILight uiLight5; private UILight uiLight5;
private UILight uiLight6; private UILight uiLight6;
private UIStatusBox uiStatusBox1;
private UILine uiLine1;
private UIButton uiButton1;
private UIButton uiButton2;
private UIButton uiButton3;
} }
} }

View File

@ -6,5 +6,27 @@
{ {
InitializeComponent(); InitializeComponent();
} }
public enum LightState
{
Green = 1,
Yellow = 2,
Red = 3
}
private void uiButton1_Click(object sender, System.EventArgs e)
{
uiStatusBox1.Status = (int)LightState.Green;
}
private void uiButton2_Click(object sender, System.EventArgs e)
{
uiStatusBox1.Status = (int)LightState.Yellow;
}
private void uiButton3_Click(object sender, System.EventArgs e)
{
uiStatusBox1.Status = (int)LightState.Red;
}
} }
} }

View File

@ -30,74 +30,45 @@ namespace Sunny.UI.Demo
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMeter)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMeter));
this.uiPanel1 = new Sunny.UI.UIPanel();
this.uiAnalogMeter1 = new Sunny.UI.UIAnalogMeter(); this.uiAnalogMeter1 = new Sunny.UI.UIAnalogMeter();
this.uiLine9 = new Sunny.UI.UILine(); this.uiLine9 = new Sunny.UI.UILine();
this.uiRoundMeter2 = new Sunny.UI.UIRoundMeter(); this.uiRoundMeter2 = new Sunny.UI.UIRoundMeter();
this.uiLine6 = new Sunny.UI.UILine(); this.uiLine6 = new Sunny.UI.UILine();
this.uiRoundMeter1 = new Sunny.UI.UIRoundMeter(); this.uiRoundMeter1 = new Sunny.UI.UIRoundMeter();
this.uiRuler3 = new Sunny.UI.UIRuler();
this.uiThermometer1 = new Sunny.UI.UIThermometer();
this.uiLine1 = new Sunny.UI.UILine(); this.uiLine1 = new Sunny.UI.UILine();
this.uiKnob2 = new Sunny.UI.UIKnob(); this.uiRuler1 = new Sunny.UI.UIRuler();
this.uiKnob3 = new Sunny.UI.UIKnob(); this.uiThermometer2 = new Sunny.UI.UIThermometer();
this.uiKnob4 = new Sunny.UI.UIKnob();
this.uiKnob1 = new Sunny.UI.UIKnob();
this.uiPanel1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// uiPanel1
//
this.uiPanel1.Controls.Add(this.uiAnalogMeter1);
this.uiPanel1.Controls.Add(this.uiLine9);
this.uiPanel1.Controls.Add(this.uiRoundMeter2);
this.uiPanel1.Controls.Add(this.uiLine6);
this.uiPanel1.Controls.Add(this.uiRoundMeter1);
this.uiPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.uiPanel1.FillColor2 = System.Drawing.Color.CornflowerBlue;
this.uiPanel1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiPanel1.Location = new System.Drawing.Point(0, 35);
this.uiPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiPanel1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiPanel1.Name = "uiPanel1";
this.uiPanel1.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiPanel1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
this.uiPanel1.Size = new System.Drawing.Size(800, 504);
this.uiPanel1.Style = Sunny.UI.UIStyle.Custom;
this.uiPanel1.StyleCustomMode = true;
this.uiPanel1.TabIndex = 69;
this.uiPanel1.Text = null;
this.uiPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
this.uiPanel1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiAnalogMeter1 // uiAnalogMeter1
// //
this.uiAnalogMeter1.BackColor = System.Drawing.Color.Transparent; this.uiAnalogMeter1.BackColor = System.Drawing.Color.Transparent;
this.uiAnalogMeter1.Font = new System.Drawing.Font("宋体", 12F); this.uiAnalogMeter1.Font = new System.Drawing.Font("宋体", 12F);
this.uiAnalogMeter1.Location = new System.Drawing.Point(381, 61); this.uiAnalogMeter1.Location = new System.Drawing.Point(381, 96);
this.uiAnalogMeter1.MaxValue = 100D; this.uiAnalogMeter1.MaxValue = 100D;
this.uiAnalogMeter1.MinimumSize = new System.Drawing.Size(1, 1); this.uiAnalogMeter1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiAnalogMeter1.MinValue = 0D; this.uiAnalogMeter1.MinValue = 0D;
this.uiAnalogMeter1.Name = "uiAnalogMeter1"; this.uiAnalogMeter1.Name = "uiAnalogMeter1";
this.uiAnalogMeter1.Renderer = null; this.uiAnalogMeter1.Renderer = null;
this.uiAnalogMeter1.Size = new System.Drawing.Size(140, 140); this.uiAnalogMeter1.Size = new System.Drawing.Size(140, 140);
this.uiAnalogMeter1.Style = Sunny.UI.UIStyle.Custom;
this.uiAnalogMeter1.TabIndex = 73; this.uiAnalogMeter1.TabIndex = 73;
this.uiAnalogMeter1.Text = "uiAnalogMeter1"; this.uiAnalogMeter1.Text = "uiAnalogMeter1";
this.uiAnalogMeter1.Value = 0D; this.uiAnalogMeter1.Value = 0D;
this.uiAnalogMeter1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiLine9 // uiLine9
// //
this.uiLine9.BackColor = System.Drawing.Color.Transparent; this.uiLine9.BackColor = System.Drawing.Color.Transparent;
this.uiLine9.Font = new System.Drawing.Font("宋体", 12F); this.uiLine9.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine9.Location = new System.Drawing.Point(381, 20); this.uiLine9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine9.Location = new System.Drawing.Point(381, 55);
this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine9.Name = "uiLine9"; this.uiLine9.Name = "uiLine9";
this.uiLine9.Size = new System.Drawing.Size(319, 20); this.uiLine9.Size = new System.Drawing.Size(319, 20);
this.uiLine9.Style = Sunny.UI.UIStyle.Custom;
this.uiLine9.TabIndex = 72; this.uiLine9.TabIndex = 72;
this.uiLine9.Text = "UIAnalogMeter"; this.uiLine9.Text = "UIAnalogMeter";
this.uiLine9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.uiLine9.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiRoundMeter2 // uiRoundMeter2
// //
@ -106,29 +77,26 @@ namespace Sunny.UI.Demo
this.uiRoundMeter2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter2.BackgroundImage"))); this.uiRoundMeter2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter2.BackgroundImage")));
this.uiRoundMeter2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.uiRoundMeter2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.uiRoundMeter2.Font = new System.Drawing.Font("宋体", 12F); this.uiRoundMeter2.Font = new System.Drawing.Font("宋体", 12F);
this.uiRoundMeter2.Location = new System.Drawing.Point(186, 56); this.uiRoundMeter2.Location = new System.Drawing.Point(186, 91);
this.uiRoundMeter2.MeterType = Sunny.UI.UIRoundMeter.TMeterType.Wind; this.uiRoundMeter2.MeterType = Sunny.UI.UIRoundMeter.TMeterType.Wind;
this.uiRoundMeter2.MinimumSize = new System.Drawing.Size(1, 1); this.uiRoundMeter2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRoundMeter2.Name = "uiRoundMeter2"; this.uiRoundMeter2.Name = "uiRoundMeter2";
this.uiRoundMeter2.Size = new System.Drawing.Size(140, 140); this.uiRoundMeter2.Size = new System.Drawing.Size(140, 140);
this.uiRoundMeter2.Style = Sunny.UI.UIStyle.Custom;
this.uiRoundMeter2.TabIndex = 71; this.uiRoundMeter2.TabIndex = 71;
this.uiRoundMeter2.Text = "uiRoundMeter2"; this.uiRoundMeter2.Text = "uiRoundMeter2";
this.uiRoundMeter2.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiLine6 // uiLine6
// //
this.uiLine6.BackColor = System.Drawing.Color.Transparent; this.uiLine6.BackColor = System.Drawing.Color.Transparent;
this.uiLine6.Font = new System.Drawing.Font("宋体", 12F); this.uiLine6.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine6.Location = new System.Drawing.Point(30, 20); this.uiLine6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine6.Location = new System.Drawing.Point(30, 55);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6"; this.uiLine6.Name = "uiLine6";
this.uiLine6.Size = new System.Drawing.Size(319, 20); this.uiLine6.Size = new System.Drawing.Size(319, 20);
this.uiLine6.Style = Sunny.UI.UIStyle.Custom;
this.uiLine6.TabIndex = 70; this.uiLine6.TabIndex = 70;
this.uiLine6.Text = "UIRoundMeter"; this.uiLine6.Text = "UIRoundMeter";
this.uiLine6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.uiLine6.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiRoundMeter1 // uiRoundMeter1
// //
@ -137,162 +105,112 @@ namespace Sunny.UI.Demo
this.uiRoundMeter1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter1.BackgroundImage"))); this.uiRoundMeter1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter1.BackgroundImage")));
this.uiRoundMeter1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.uiRoundMeter1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.uiRoundMeter1.Font = new System.Drawing.Font("宋体", 12F); this.uiRoundMeter1.Font = new System.Drawing.Font("宋体", 12F);
this.uiRoundMeter1.Location = new System.Drawing.Point(30, 56); this.uiRoundMeter1.Location = new System.Drawing.Point(30, 91);
this.uiRoundMeter1.MinimumSize = new System.Drawing.Size(1, 1); this.uiRoundMeter1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRoundMeter1.Name = "uiRoundMeter1"; this.uiRoundMeter1.Name = "uiRoundMeter1";
this.uiRoundMeter1.Size = new System.Drawing.Size(140, 140); this.uiRoundMeter1.Size = new System.Drawing.Size(140, 140);
this.uiRoundMeter1.Style = Sunny.UI.UIStyle.Custom;
this.uiRoundMeter1.TabIndex = 69; this.uiRoundMeter1.TabIndex = 69;
this.uiRoundMeter1.Text = "uiRoundMeter1"; this.uiRoundMeter1.Text = "uiRoundMeter1";
this.uiRoundMeter1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0); //
// uiRuler3
//
this.uiRuler3.BackColor = System.Drawing.Color.Transparent;
this.uiRuler3.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiRuler3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiRuler3.Location = new System.Drawing.Point(56, 287);
this.uiRuler3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRuler3.MinorCount = 4;
this.uiRuler3.Name = "uiRuler3";
this.uiRuler3.Size = new System.Drawing.Size(35, 196);
this.uiRuler3.TabIndex = 113;
this.uiRuler3.Text = "uiRuler3";
//
// uiThermometer1
//
this.uiThermometer1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiThermometer1.Location = new System.Drawing.Point(78, 294);
this.uiThermometer1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiThermometer1.Name = "uiThermometer1";
this.uiThermometer1.Size = new System.Drawing.Size(49, 194);
this.uiThermometer1.TabIndex = 112;
this.uiThermometer1.Text = "uiThermometer1";
this.uiThermometer1.Value = 30;
// //
// uiLine1 // uiLine1
// //
this.uiLine1.BackColor = System.Drawing.Color.Transparent; this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 276); this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine1.LineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiLine1.Location = new System.Drawing.Point(30, 261);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1"; this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(319, 20); this.uiLine1.Size = new System.Drawing.Size(319, 20);
this.uiLine1.TabIndex = 71; this.uiLine1.TabIndex = 111;
this.uiLine1.Text = "UIKnob"; this.uiLine1.Text = "UIThermometer";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.uiLine1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiKnob2 // uiRuler1
// //
this.uiKnob2.EndAngle = 440F; this.uiRuler1.BackColor = System.Drawing.Color.Transparent;
this.uiKnob2.ImeMode = System.Windows.Forms.ImeMode.On; this.uiRuler1.Direction = Sunny.UI.UITrackBar.BarDirection.Vertical;
this.uiKnob2.KnobBackColor = System.Drawing.Color.Black; this.uiRuler1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiKnob2.KnobPointerStyle = Sunny.UI.UIKnob.KnobPointerStyles.line; this.uiRuler1.Location = new System.Drawing.Point(213, 287);
this.uiKnob2.LargeChange = 5; this.uiRuler1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiKnob2.Location = new System.Drawing.Point(208, 326); this.uiRuler1.MinorCount = 4;
this.uiKnob2.Maximum = 100; this.uiRuler1.Name = "uiRuler1";
this.uiKnob2.Minimum = -100; this.uiRuler1.Size = new System.Drawing.Size(35, 196);
this.uiKnob2.Name = "uiKnob2"; this.uiRuler1.StartValue = -20D;
this.uiKnob2.PointerColor = System.Drawing.Color.SlateBlue; this.uiRuler1.StepCount = 6;
this.uiKnob2.ScaleColor = System.Drawing.Color.Black; this.uiRuler1.TabIndex = 115;
this.uiKnob2.ScaleDivisions = 21; this.uiRuler1.Text = "uiRuler1";
this.uiKnob2.ScaleFont = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.uiKnob2.ScaleSubDivisions = 4;
this.uiKnob2.ShowLargeScale = true;
this.uiKnob2.ShowSmallScale = false;
this.uiKnob2.Size = new System.Drawing.Size(150, 150);
this.uiKnob2.SmallChange = 1;
this.uiKnob2.StartAngle = 100F;
this.uiKnob2.TabIndex = 1;
this.uiKnob2.Value = -30;
this.uiKnob2.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// uiKnob3 // uiThermometer2
// //
this.uiKnob3.EndAngle = 405F; this.uiThermometer2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiKnob3.ImeMode = System.Windows.Forms.ImeMode.On; this.uiThermometer2.Location = new System.Drawing.Point(235, 294);
this.uiKnob3.KnobBackColor = System.Drawing.Color.White; this.uiThermometer2.Minimum = -20;
this.uiKnob3.KnobPointerStyle = Sunny.UI.UIKnob.KnobPointerStyles.line; this.uiThermometer2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiKnob3.LargeChange = 5; this.uiThermometer2.Name = "uiThermometer2";
this.uiKnob3.Location = new System.Drawing.Point(386, 326); this.uiThermometer2.Size = new System.Drawing.Size(49, 194);
this.uiKnob3.Maximum = 100; this.uiThermometer2.TabIndex = 114;
this.uiKnob3.Minimum = 0; this.uiThermometer2.Text = "uiThermometer2";
this.uiKnob3.Name = "uiKnob3"; this.uiThermometer2.Value = 30;
this.uiKnob3.PointerColor = System.Drawing.Color.SlateBlue;
this.uiKnob3.ScaleColor = System.Drawing.Color.Black;
this.uiKnob3.ScaleDivisions = 11;
this.uiKnob3.ScaleFont = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.uiKnob3.ScaleFontAutoSize = false;
this.uiKnob3.ScaleSubDivisions = 1;
this.uiKnob3.ShowLargeScale = true;
this.uiKnob3.ShowSmallScale = true;
this.uiKnob3.Size = new System.Drawing.Size(150, 150);
this.uiKnob3.SmallChange = 2;
this.uiKnob3.StartAngle = 135F;
this.uiKnob3.TabIndex = 2;
this.uiKnob3.Value = 0;
this.uiKnob3.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiKnob4
//
this.uiKnob4.DrawDivInside = true;
this.uiKnob4.EndAngle = 360F;
this.uiKnob4.ImeMode = System.Windows.Forms.ImeMode.On;
this.uiKnob4.KnobBackColor = System.Drawing.Color.Gray;
this.uiKnob4.KnobPointerStyle = Sunny.UI.UIKnob.KnobPointerStyles.circle;
this.uiKnob4.LargeChange = 5;
this.uiKnob4.Location = new System.Drawing.Point(564, 326);
this.uiKnob4.Maximum = 10;
this.uiKnob4.Minimum = 0;
this.uiKnob4.Name = "uiKnob4";
this.uiKnob4.PointerColor = System.Drawing.Color.White;
this.uiKnob4.ScaleColor = System.Drawing.Color.Black;
this.uiKnob4.ScaleDivisions = 11;
this.uiKnob4.ScaleFont = new System.Drawing.Font("Bauhaus 93", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.uiKnob4.ScaleFontAutoSize = false;
this.uiKnob4.ScaleSubDivisions = 4;
this.uiKnob4.ShowLargeScale = true;
this.uiKnob4.ShowSmallScale = false;
this.uiKnob4.Size = new System.Drawing.Size(150, 150);
this.uiKnob4.SmallChange = 1;
this.uiKnob4.StartAngle = 180F;
this.uiKnob4.TabIndex = 3;
this.uiKnob4.Value = 3;
this.uiKnob4.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiKnob1
//
this.uiKnob1.EndAngle = 405F;
this.uiKnob1.KnobBackColor = System.Drawing.Color.White;
this.uiKnob1.KnobPointerStyle = Sunny.UI.UIKnob.KnobPointerStyles.circle;
this.uiKnob1.LargeChange = 5;
this.uiKnob1.Location = new System.Drawing.Point(30, 326);
this.uiKnob1.Maximum = 100;
this.uiKnob1.Minimum = 0;
this.uiKnob1.Name = "uiKnob1";
this.uiKnob1.PointerColor = System.Drawing.Color.SlateBlue;
this.uiKnob1.ScaleColor = System.Drawing.Color.Black;
this.uiKnob1.ScaleDivisions = 11;
this.uiKnob1.ScaleFont = new System.Drawing.Font("宋体", 9F);
this.uiKnob1.ScaleSubDivisions = 4;
this.uiKnob1.ShowLargeScale = true;
this.uiKnob1.ShowSmallScale = false;
this.uiKnob1.Size = new System.Drawing.Size(150, 150);
this.uiKnob1.SmallChange = 1;
this.uiKnob1.StartAngle = 135F;
this.uiKnob1.TabIndex = 72;
this.uiKnob1.Value = 0;
this.uiKnob1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
// //
// FMeter // FMeter
// //
this.AllowShowTitle = true; this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 539); this.ClientSize = new System.Drawing.Size(800, 539);
this.Controls.Add(this.uiKnob1); this.Controls.Add(this.uiRuler1);
this.Controls.Add(this.uiKnob4); this.Controls.Add(this.uiThermometer2);
this.Controls.Add(this.uiKnob3); this.Controls.Add(this.uiRuler3);
this.Controls.Add(this.uiKnob2); this.Controls.Add(this.uiThermometer1);
this.Controls.Add(this.uiLine1); this.Controls.Add(this.uiLine1);
this.Controls.Add(this.uiPanel1); this.Controls.Add(this.uiAnalogMeter1);
this.Controls.Add(this.uiLine9);
this.Controls.Add(this.uiLine6);
this.Controls.Add(this.uiRoundMeter2);
this.Controls.Add(this.uiRoundMeter1);
this.Name = "FMeter"; this.Name = "FMeter";
this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0); this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0);
this.ShowTitle = true; this.ShowTitle = true;
this.Symbol = 61668; this.Symbol = 61668;
this.Text = "Meter"; this.Text = "Meter";
this.uiPanel1.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
} }
#endregion #endregion
private UIPanel uiPanel1;
private UIAnalogMeter uiAnalogMeter1; private UIAnalogMeter uiAnalogMeter1;
private UILine uiLine9; private UILine uiLine9;
private UIRoundMeter uiRoundMeter2; private UIRoundMeter uiRoundMeter2;
private UILine uiLine6; private UILine uiLine6;
private UIRoundMeter uiRoundMeter1; private UIRoundMeter uiRoundMeter1;
private UIRuler uiRuler3;
private UIThermometer uiThermometer1;
private UILine uiLine1; private UILine uiLine1;
private UIKnob uiKnob2; private UIRuler uiRuler1;
private UIKnob uiKnob3; private UIThermometer uiThermometer2;
private UIKnob uiKnob4;
private UIKnob uiKnob1;
} }
} }

View File

@ -16,6 +16,9 @@ namespace Sunny.UI.Demo
uiRoundMeter1.Angle = value * 10; uiRoundMeter1.Angle = value * 10;
uiRoundMeter2.Angle = value * 10; uiRoundMeter2.Angle = value * 10;
uiAnalogMeter1.Value = value; uiAnalogMeter1.Value = value;
uiThermometer1.Value = value;
uiThermometer2.Value = value;
} }
Timer timer = new Timer(); Timer timer = new Timer();

View File

@ -317,265 +317,265 @@
<data name="uiRoundMeter1.AngleImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="uiRoundMeter1.AngleImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAYAAACuwEE+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAYAAACuwEE+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAlkSURBVHhe7Z0NjFTVGYaxIW66/lRFbRd2xpZuUIPL2mwW YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAllSURBVHhe7Z0NbJXVHcZxITarH1OZLIXe68YanMFSl6aQ
EhcqhkLjsqRhsakYJbZqaattbehqSiiUVm3MRkksJWQTRJQKtWDDWrfollCXXQKLi4CkpIutP4TY0B9i DaoYBoulZKG4TMwkburYpttcWDUjDMamLqZREscIaYIMZcIcuFBnh1aClpbZYhGQjKy4iSPEhX0Qo4X7
FJide885/d455+7MLLPLjPs3c+d9kjczOz/3nu877/3OuWfuzI4jhAwRrfUU0T2ib4k+7x4mJDPGmBtE 8Z5z9n/uOe/9KLflXtvb3o/nlzy5t/fjfc//f573nPOe97y3EwghI0RrPV10l+gbos+4lwlJjzHmC6K7
99IwZFDMnuiV8fbxM/x371+szhx7AtK6bYp7mpB0Yh2TFsX3RYzXfUlC8Y7PGjzmniYkndhfr1uYMMyh aRgyLGZ/8OpI58TZ3rv3LlMDxx+DtO6Y7t4mJJVQ19SlkTcCJtp3WUyRrk8avObeJiSV0GvXLYkZ5nBl
8oTiXREahgwMDUNygoYhORHbU07DkOyhYUhO0DAkJ2gYkhM0DMmJ8wxzIErDkIGhYUhO0DAkJ2J7xTAy TJHeAA1DhoaGIVlBw5CsCO2vpGFI5tAwJCtoGJIVNAzJChqGZMUFhjkYpGHI0NAwJCtoGJIVoQNiGBm3
b0kzTFeUhiGZoWFITtAwJCdoGJITCcOISWgYkhU4S/LeTFYY3KdhyIDg8oY+w7w1SVRm/LfmftM9TUg6 pBimN0jDkPTQMCQraBiSFTQMyYqYYcQkNAzJCJwlRd9MtDB4TsOQIcHyhrhh3poqqjDeWwu+7t4mJJXQ
sV3RRmuUQGWm92DVrjMdX5noXkKIJbYzWh/rjv4nWV2Sponvm7yDpiF9xN8onx7fF3n/fLM4HYwkTINv 3mCzNYqvChM+VLN3oOuLU9xHCLGE9gQbQ33B/yRal4RpIm9M203TkDiR1ytnRf4SeO9CszgdCsRMg7sK
Fbi3kGIl1lV5fXx/5MiAZgkkpvEOVG80J8tK3VtJsYFhJrZ3UntGg2QSTNM9a7Ux5jNuE6RYSHxpTYaZ 3FdIqRLqrb4+0hM4OqRZfIlpogdrt5jTFeXuq6TUQDcTOjC1M61B0gmm6atfZ4z5hNsEKRViN61JN5PW
jMYYROcORGI8cyoydE9FSW9n5JlExchgigsJk2MMZW5zJOzEO8uXnTv4hbOZzJCtMEl2myNhBte3DGyW GMNooGdqiGdOJYburyoLdweeirUYaUxxMWFwjK7MbY4UO5HuypUDhyafS2eGTIVBstscKWawvmVos1Rc
sguo3+sPTv6b2ywJI97+6JzEWktgAAxJhyusjtyY1NuV6Up9Lnh9MJwdur7LbZ6EibS1FnS4GME/vsj4 RIM+f2jaX91mSTES7QnOj821+AZAl3SkyuroDQm9XZ2q5Pf8z/vd2eHre93mSTGRMteCChcjeCeWGu/U
J35m1Klmo/73ktEftVmdPWz0ueNWn3T3Pa7+u9W+9oNG4/cs6DMQVoPdbkgY6FtrOc8kL1szfLzXGuPs T40602rU/543+oMOq3NHjD5/wuqjvvjr6r877Gf/2Wy8/sVxA2E22O2GFAPxuZYLTPKCNcOHB6wxzh1N
kQw66m7FRHgNXgvzyHvTzPP3+g1ud6SQ0f9cdh0qgHr3AdP7QZNKmCRhjmMpgikCYwym4HUp7xUDofIk o2PuUUyEz+CzMI98N8U8f2vc7HZHChn9j5XXoQVQ795nzp9sUTGTxMxxPEkwhW+M4eR/Lum7YiC0PLFt
tn36lbXGmCvcrkkhgcU1Y3aPV/9qfg5VIFEZMMQkOtxVi+EQtuVMF/+487TqPfGk7LsaxuECX4GgtS4R n31xgzHmKrdrUkhgcs2YfRPVv1p/i1Yg1jKgi4lVuGstRkPYljNd6MPusyp86nHZdy2Mwwm+AkFrXSaq
VYoaPe/UO96Zf3wU7z3x4UgL+8H+lFItsu+HRfitvBLXLJKP4MiWTrpHOm2z7/t7ILm/W9Qmem2Etdvt FjVHo2feCQ/8/YNw+NT7OZfsB/tTSrXJvh8U4bfyylyxSD6CI1sq6S6ptG2e5+2H5Pk+UYfo5Rxrn9tn
swv3RZukLQ3Spktd80g+IZ3zJVGjdNR26bT9rtMydeyIyxkHbdgsbXpIxB9XzBcwV5EOwRC0XDoIlQTa L56LtkpZmqRMl7vikXxCKudzomapqF1SaT2u0tJVbM7ljIMybJMyPSDijyvmCxirSIWgC1olFYSWBNrt
4dQyRgr2j7a0wjRSafDrnJzXjCUwi3RCtXSKnKaoVtF2SB57KR8UtEcEE+GTbppmrEDi5cidIR2xTvSi 1DZO8vePsrTDNNLS4Nc5Oa4ZT2AWqYRaqRQ5TVHtol2QvPZ8PsgvjwgmwpVumma8QOLlyJ0tFbFR9Jxo
aItoU54KbdssapI2T3UhkNEixSyrXYesLxBhIrxcVOlCIaOBGOZmSTomuOiENU5P57mCdq6TtmMizB+N u2hrngpl2yZqkTLPcCGQsSLJLOtchWwqEGEgvEpU7UIhY4EY5iZJOga4qIT1Tk/mufxybpSyYyDMH40e
Hg0k0RHRw5J4zFseFz1WYEKbMTR9T3SNC4uMBFJZLhXh/wCgrIdB+H8GXNwbCdzp89dFWEUNjeQAmOlC CyTRAdGDkniMWx4VPVJgQpnRNX1XdK0Li+QCaVkuF+H/AKBZLwbh/xlwci8XuNPnr4owi1o0kgNgrguR
JMOJJBdrLQ+IUMpxGwYhlu+IOJ8ZTiShE0QNIvwfo7vCJDfE1mG4deGSoSIJnSGCYRaGUIgLnznd7MIl jCaSXMy13CdCU47HYhBi+baI45nRRBI6SdQkwv8xurOY5LrYBnS3LlwyUiShs0UwzJIiFOLCNaebXLhk
Q0GSibMizF3q3G0YFcTGz5yGgiSwBEeeaLZoZsg1W+KtxOTehU9yRRI4URKJC5KKRhIz12Y+DaguIlyy JEgycVaEsUuDeyxG+bHxmtNIkASW4cgTzRPNLXLNk3irMbh34ZNskQROkURiQVLJSGLm3MzHAa2LCEsW
gLOjqUUixBphlfkUyNGGi6G+LIJpikmI+XKXBpINbpHuGhEmvBOLTIh5AqtMDkjCMBxh7aWYxY8MskGG cHY0o0SEWANsZT4GcrRhMdTnRTBNKQkxX+nSQDLBTdJdK8KAd0qJCTFPYiuTBZIwdEeYeyll8ZJBJkhX
Ily6gLMjfG5UtHI54MVWFwJJQrIoGiZrkCiKZiGEEEIIIYQQQgghhBBCCCGEEEIIISTU2AuF8Dt1Ry+m hKULODvCdaOSlcsBF1tdDCQJyaJomIxBoiiahRBCCCGEEEIIIYQQQgghhBBCCCGEkKLGLhTC79Qdu5TK
slGRX1RlDYNEtH1O647LqMFFwyQMk6gyV1ODS+u2CTRMimG0bi2nBpY1Dq/zDeYxOIKmaL2zgsqktinG RCW+qMoaBono+JTWXVdQw4uGiRkm1sp8mhpeWndMomGSDKN1eyU1tKxxuM7XH8fgCJqu9Z4qKp06phuz
7LmShnHYOcwrVdTAMqaF/zM7AMmwifnDDCqTYBh+dbYPlFo7JD0/V+vNt1Gpen6uMdsmczjqh53HPLtA /2oaxmHHMC/WUEPLmDb+z2wfJMMm5g+zqXSCYXjrbBw0tbZLemaB1ttupZL1zAJjdk5jdzQIO455erHW
6xfmU6l6dgGGbJcmEmCHJRxRaxZr3XwHBSEXW2uxVuXSRFKxw9LT92v927spCLloLXfpIf3BqaM9spp+ zy6ikvX0YnTZLk3Ex3ZLOKLWL9O69XYKQi52zMFclUsTScZ2S0/eq/VvvklByEV7pUsPGQxOHe2R1fJ9
YJMV6JmlxaHUmJEDDEc8OxoUe7b0q0e0fvzH6WpaFm71jxc52Fnh0kIGwlYZlOPGlVqvfDSpVSskkfJY myxfT60oDSXHjBygO+LZ0bDYs6VfPqT1oz9KVcvK4tbgeJGDPVUuLWQobCuD5rh5jdZrHk5o7WpJpLxW
GJUaJ4TYm+9gdckSrTdIlVm1Qqllv7TJs1LqF0+GUekxIuaVj+JU2qWDXAi7LrOmQan7nlLqwV8r9dAT jEqOE0LsrbezdckQrTdLK7N2tVIrf2GTZ6XUzx8vRqXGiJjXPIxTaZcOcjHsvMz6JqXueUKp+3+l1AOP
Vj9pUmr52nAJMQXxIdb7nsLai0sFyRa7LvPzHym1WJIK4wR6cJ0chRsl0RsKW4gBsaTGtnitnfB2XObS Wf24RalVG4pLiMmPD7He8wTmXlwqSKbYeZmf/VCpZZJUGMfX/RvlKNwiid5c2EIMiCU5tmUb7IC36wqX
QHIBQ5M98hrWW+MEWvqCUj/cWthCDKkxIUYMR5zoDgmsdtpkfqM5Xd/dUdhKjaVOKg6qy9ZaFzYZCljx BpIN6Jrskde0yRrH14pnlfrBjsIWYkiOCTGiO+JAd0RgttMm82utqfrO7sJWciwN0uKgddkxx4VNRgJm
VGqOlPBZm+wttECO0iWvF57u+rNS819MxoGY6jZgzcWFS4aKnQQ/8n2larYoNV1KeaCv/VGpRbt8/84O PJWaL014/Vb7CC2Wo3T5K4WnO/+s1KLnEnEgpobNmHNx4ZKRYgfBD31PqbrtSs2SptzXV/6o1NK9nndH
UXueq0OphX+xbQ7aP+13uMUB4UIlw4W9rhWmqdqm1OTf22RDX/2T79d3+n7D/vxWfSfammw3YqjZArPw l6gzz9Wl1JJXbZn98s/8HR5xQLhQyWhh17XCNDU7lZr2e5ts6OY/eV5jt+c19eS3GrtR1kS5EUPddpiF
0oURApXGmOX3WtNM2G6TDk1t9f3bD/l+3WHfn3/E3h9rBW3B7e2H0MZke9H2qm1YOnChkZEEibZj/3jp SxdyBFoaY1bdbU0zaZdNOjSj3fNuO+x5DUc8b9FR+3y85ZcFj7cdRhkT5UXZa3Zi6sCFRnIJEm37/olS
BCQfir7m+zXdnjevx/NuO5YfmteDNqFtyXaizZiz/IZrLaOFndOsrlWqfo1SF+0SyVnH5S9b09x4wPNq CUg+FHzZ8+r6otGF/dHorcfzQwv7USaULVFOlBljll9zrmWssGOadXOUalyv1CV7RXLWceUL1jQ3HIxG
3/G8W9+3t7XHnXB/JJWyH7tvtEWpa1+1bUMbL5JJ752PYbnAhUJGE2NaonZeg3KPzkCnjG815otvel6V 57wTidzyHh5FJ5zwPJeK78ffN8qi1OSXbNlQxktk0HvHI5gucKGQscSYtqAd16C5R2WgUia2G/PZN6PR
dNz0k553y4f2tua9kVXqvm7qQRtsNQmMUrUNwykvVxhj7Bfhvj0T1cb3x70RdJLvX9WebppA+Hs41X+7 Gqm4utPh8Jffx6PoZI4V31c0emM/ymBbE98oNTvRnXK5wjhjb4T71ly0Np434XW/kjzvms5k0/jC36Op
N8kwdFV7YF7bJlSVpdN5mWUegS962blNzZakcdBhME61VIDZp61u+bfnzTo1PMK2gu1WyRAEowT7RRtm wduFWbBv37y2TGhVVsziMss8Ajd62bFN3faEcVBh13RGIrUnw+F5Z62+9O9wuP7M6AjbstuFOa1R/P2i
bcJcBZ/Au2aSfMJWG3wGZY0jRznmN6+jI5PDFDp69ieeN/ecvQ06PGulvBfbssOPqyoYFmWfczZao/DL DPVbMVbBFXhXTJJP2NYG16CsceQox/jmFVSk303Zir75o3B4wXn76BspUyV/t/6M3/24VgXdouxz/hZr
ZwWBNc6tV2i9ZJq9ZAATTxintN33o4etcVB1EuZxJgiMkEnB83gthh+8FxUlIqfPpc4o175qL3paMg37 FN58VhBY49xyldbLZ9olAxh4wjjlnZ4XPGK7KrQ6MI9vAt8I6eS/j8+i+6k9aVuUgJw+lzujTH7JLnpa
5tpKgYKLkMzJslKtfzoPH+7ZNZxEJRADVbxt5x2DmSbVLNXvwST2/Rh6sPC2agXmUNgHL9YOEXbR7+jF PhP75txKgYJFSOZ0RbnWP1mIi3t2DifWEoiBqt6245DhTJMwC4wCk9jvo+vBxNva1RhDYR9crF1E2Em/
uqeixH7TEl9pQfXBh39YecUaSd/pb4qC9RMs5Test1fE4btCLaV2W/wZDkIIIYQQQgghhBBCCCGEEEII Y5fq/qoye6clbmlB64OLf5h5xRxJ/PQ3Sf78CabymzbZFXG4V6it3G6LP8NBCCGEEEIIIYQQQgghhBBC
IYQQQgghhBBCCCGEEEIIIYQQQgghhBBCyDAzbtz/AZfansKcXIX4AAAAAElFTkSuQmCC CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQggZZSZM+D+ZVJy0WDEn4QAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="uiRoundMeter1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="uiRoundMeter1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
b0BOOeX/AwoIhqoMLNEoAAAAAElFTkSuQmCC A3LKKf8faGOFumfKRXoAAAAASUVORK5CYII=
</value> </value>
</data> </data>
</root> </root>

View File

@ -9,7 +9,7 @@
private void uiTurnSwitch1_ValueChanged(object sender, bool value) private void uiTurnSwitch1_ValueChanged(object sender, bool value)
{ {
ShowInfoTip(value.ToString()); this.ShowInfoTip(value.ToString());
} }
} }
} }

View File

@ -13,6 +13,13 @@ namespace Sunny.UI.Demo
{ {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
//增加一个繁体中文的内置资源配置
UIStyles.BuiltInResources.TryAdd(CultureInfos.zh_TW.LCID, new zh_TW_Resources());
//从项目方案生成多语言配置文件生成文件在可执行文件夹的Language目录下
//生成后界面没有修改的情况下,可注释掉下一行,只运行一次即可
//TranslateHelper.LoadCsproj(@"D:\Source\SunnyUI\SunnyUI.Demo\SunnyUI.Demo.csproj");
Application.Run(new FMain()); Application.Run(new FMain());
} }
} }

View File

@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SunnyUI.Net")] [assembly: AssemblyCompany("SunnyUI.Net")]
[assembly: AssemblyProduct("SunnyUI.Demo")] [assembly: AssemblyProduct("SunnyUI.Demo")]
[assembly: AssemblyCopyright("Copyright ©SunnyUI.Net 2012-2023")] [assembly: AssemblyCopyright("Copyright ©SunnyUI.Net 2012-2024")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示: //通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.4.2.0")] [assembly: AssemblyVersion("3.8.0.1")]
[assembly: AssemblyFileVersion("3.4.2.0")] [assembly: AssemblyFileVersion("3.8.0.1")]

View File

@ -470,6 +470,36 @@ namespace Sunny.UI.Demo.Properties {
} }
} }
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap led_g {
get {
object obj = ResourceManager.GetObject("led_g", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap led_r {
get {
object obj = ResourceManager.GetObject("led_r", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap led_y {
get {
object obj = ResourceManager.GetObject("led_y", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary> /// </summary>
@ -600,6 +630,16 @@ namespace Sunny.UI.Demo.Properties {
} }
} }
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap Sunny24 {
get {
object obj = ResourceManager.GetObject("Sunny24", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary> /// </summary>
@ -623,9 +663,9 @@ namespace Sunny.UI.Demo.Properties {
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary> /// </summary>
internal static System.Drawing.Bitmap SunnyUISmall { internal static System.Drawing.Bitmap SunnyUI72 {
get { get {
object obj = ResourceManager.GetObject("SunnyUISmall", resourceCulture); object obj = ResourceManager.GetObject("SunnyUI72", resourceCulture);
return ((System.Drawing.Bitmap)(obj)); return ((System.Drawing.Bitmap)(obj));
} }
} }

View File

@ -214,6 +214,15 @@
<data name="lazio" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="lazio" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\lazio.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\lazio.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="led_g" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\led_g.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="led_r" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\led_r.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="led_y" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\led_y.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="mallorca" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="mallorca" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\mallorca.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\mallorca.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
@ -253,14 +262,17 @@
<data name="sevilla" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="sevilla" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\sevilla.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\sevilla.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="Sunny24" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Sunny24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SunnyLogin" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="SunnyLogin" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SunnyLogin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\SunnyLogin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="SunnyUI" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="SunnyUI" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SunnyUI.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\SunnyUI.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="SunnyUISmall" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="SunnyUI72" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SunnyUISmall.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\SunnyUI72.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="Tom" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Tom" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Tom.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\Tom.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -41,15 +41,34 @@
<ApplicationManifest>app.manifest</ApplicationManifest> <ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="SunnyUI, Version=3.5.0.0, Culture=neutral, PublicKeyToken=27d7d2e821d97aeb, processorArchitecture=MSIL"> <Reference Include="SunnyUI, Version=3.8.3.0, Culture=neutral, PublicKeyToken=27d7d2e821d97aeb, processorArchitecture=MSIL">
<HintPath>..\packages\SunnyUI.3.5.0\lib\net472\SunnyUI.dll</HintPath> <HintPath>..\packages\SunnyUI.3.8.3\lib\net472\SunnyUI.dll</HintPath>
</Reference> </Reference>
<Reference Include="SunnyUI.Common, Version=3.5.0.0, Culture=neutral, PublicKeyToken=5a271fb7ba597231, processorArchitecture=MSIL"> <Reference Include="SunnyUI.COM, Version=9.0.3.1, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SunnyUI.Common.3.5.0\lib\net472\SunnyUI.Common.dll</HintPath> <HintPath>..\packages\SunnyUI.COM.9.0.3.1\lib\net472\SunnyUI.COM.dll</HintPath>
</Reference>
<Reference Include="SunnyUI.Common, Version=3.8.3.0, Culture=neutral, PublicKeyToken=5a271fb7ba597231, processorArchitecture=MSIL">
<HintPath>..\packages\SunnyUI.Common.3.8.3\lib\net472\SunnyUI.Common.dll</HintPath>
</Reference>
<Reference Include="SunnyUI.FrameDecoder, Version=7.6.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SunnyUI.FrameDecoder.7.6.0\lib\net472\SunnyUI.FrameDecoder.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Design" /> <Reference Include="System.Design" />
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Web.Extensions" /> <Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
@ -145,6 +164,12 @@
<Compile Include="Forms\Frames\FCustomMain.Designer.cs"> <Compile Include="Forms\Frames\FCustomMain.Designer.cs">
<DependentUpon>FCustomMain.cs</DependentUpon> <DependentUpon>FCustomMain.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Forms\FSymbols.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\FSymbols.Designer.cs">
<DependentUpon>FSymbols.cs</DependentUpon>
</Compile>
<Compile Include="Industrial\FSwitch.cs"> <Compile Include="Industrial\FSwitch.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -375,6 +400,12 @@
</Compile> </Compile>
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UIFlowItem.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIFlowItem.Designer.cs">
<DependentUpon>UIFlowItem.cs</DependentUpon>
</Compile>
<Compile Include="Units\FCommon.cs"> <Compile Include="Units\FCommon.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -382,6 +413,7 @@
<DependentUpon>FCommon.cs</DependentUpon> <DependentUpon>FCommon.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Units\UMapperDemo.cs" /> <Compile Include="Units\UMapperDemo.cs" />
<Compile Include="Units\UZhTW.cs" />
<EmbeddedResource Include="Charts\FDoughnutChart.resx"> <EmbeddedResource Include="Charts\FDoughnutChart.resx">
<DependentUpon>FDoughnutChart.cs</DependentUpon> <DependentUpon>FDoughnutChart.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -424,6 +456,9 @@
<EmbeddedResource Include="Forms\Frames\FCustomMain.resx"> <EmbeddedResource Include="Forms\Frames\FCustomMain.resx">
<DependentUpon>FCustomMain.cs</DependentUpon> <DependentUpon>FCustomMain.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Forms\FSymbols.resx">
<DependentUpon>FSymbols.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Industrial\FLight.resx"> <EmbeddedResource Include="Industrial\FLight.resx">
<DependentUpon>FLight.cs</DependentUpon> <DependentUpon>FLight.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -548,6 +583,9 @@
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
</Compile> </Compile>
<EmbeddedResource Include="UIFlowItem.resx">
<DependentUpon>UIFlowItem.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Units\FCommon.resx"> <EmbeddedResource Include="Units\FCommon.resx">
<DependentUpon>FCommon.cs</DependentUpon> <DependentUpon>FCommon.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -732,6 +770,11 @@
<None Include="Resources\9.png" /> <None Include="Resources\9.png" />
<None Include="Resources\Home_32x32.png" /> <None Include="Resources\Home_32x32.png" />
<None Include="Resources\Tom.gif" /> <None Include="Resources\Tom.gif" />
<None Include="Resources\Sunny24.png" />
<None Include="Resources\SunnyUI72.png" />
<None Include="Resources\led_g.png" />
<None Include="Resources\led_r.png" />
<None Include="Resources\led_y.png" />
<Content Include="SunnyUI.ico" /> <Content Include="SunnyUI.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup />

45
SunnyUI.Demo/UIFlowItem.Designer.cs generated Normal file
View File

@ -0,0 +1,45 @@
namespace Sunny.UI.Demo
{
partial class UIFlowItem
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// UIFlowItem
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.Name = "UIFlowItem";
this.Size = new System.Drawing.Size(173, 103);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.UIFlowItem_Paint);
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -0,0 +1,20 @@
using System.Drawing;
namespace Sunny.UI.Demo
{
public partial class UIFlowItem : UIUserControl
{
public UIFlowItem()
{
InitializeComponent();
}
private void UIFlowItem_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.FillEllipse(Color.Lime, new Rectangle(10, 10, 20, 20));
e.Graphics.DrawString(Text, Font, ForeColor, new Rectangle(35, 0, Width, 40), ContentAlignment.MiddleLeft);
e.Graphics.DrawLine(ForeColor, 10, 40, Width - 20, 40);
e.Graphics.DrawString("Hello SunnyUI !", Font, ForeColor, new Rectangle(10, 40, Width, Height - 40), ContentAlignment.MiddleLeft);
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,55 @@
using System.Globalization;
namespace Sunny.UI.Demo
{
/// <summary>
/// 多語言字符串定義
/// </summary>
public class zh_TW_Resources : UIBuiltInResources
{
public override CultureInfo CultureInfo { get; } = CultureInfos.zh_TW;
public override string InfoTitle { get; set; } = "提示";
public override string SuccessTitle { get; set; } = "正確";
public override string WarningTitle { get; set; } = "警告";
public override string ErrorTitle { get; set; } = "錯誤";
public override string AskTitle { get; set; } = "提示";
public override string InputTitle { get; set; } = "輸入";
public override string SelectTitle { get; set; } = "選擇";
public override string CloseAll { get; set; } = "全部關閉";
public override string OK { get; set; } = "確定";
public override string Cancel { get; set; } = "取消";
public override string GridNoData { get; set; } = "[ 無資料 ]";
public override string GridDataLoading { get; set; } = "資料加載中,請稍候...";
public override string GridDataSourceException { get; set; } = "資料源必須為DataTable或者List";
public override string SystemProcessing { get; set; } = "系統正在處理中,請稍候...";
public override string Monday { get; set; } = "一";
public override string Tuesday { get; set; } = "二";
public override string Wednesday { get; set; } = "三";
public override string Thursday { get; set; } = "四";
public override string Friday { get; set; } = "五";
public override string Saturday { get; set; } = "六";
public override string Sunday { get; set; } = "日";
public override string Prev { get; set; } = "上一頁";
public override string Next { get; set; } = "下一頁";
public override string SelectPageLeft { get; set; } = "第";
public override string SelectPageRight { get; set; } = "頁";
public override string January { get; set; } = "一月";
public override string February { get; set; } = "二月";
public override string March { get; set; } = "三月";
public override string April { get; set; } = "四月";
public override string May { get; set; } = "五月";
public override string June { get; set; } = "六月";
public override string July { get; set; } = "七月";
public override string August { get; set; } = "八月";
public override string September { get; set; } = "九月";
public override string October { get; set; } = "十月";
public override string November { get; set; } = "十一月";
public override string December { get; set; } = "十二月";
public override string Today { get; set; } = "今天";
public override string Search { get; set; } = "搜尋";
public override string Clear { get; set; } = "清除";
public override string Open { get; set; } = "打開";
public override string Save { get; set; } = "保存";
public override string All { get; set; } = "全部";
}
}

View File

@ -1,3 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration> <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="SunnyUI.Common" publicKeyToken="5a271fb7ba597231" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.7.0.0" newVersion="3.7.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="SunnyUI" version="3.5.0" targetFramework="net472" /> <package id="SunnyUI" version="3.8.3" targetFramework="net472" />
<package id="SunnyUI.Common" version="3.5.0" targetFramework="net472" /> <package id="SunnyUI.COM" version="9.0.3.1" targetFramework="net472" />
<package id="SunnyUI.Common" version="3.8.3" targetFramework="net472" />
<package id="SunnyUI.FrameDecoder" version="7.6.0" targetFramework="net472" />
<package id="System.Buffers" version="4.6.1" targetFramework="net472" />
<package id="System.Memory" version="4.6.3" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.6.1" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net472" />
</packages> </packages>

View File

@ -2,3 +2,139 @@
# Default severity for analyzer diagnostics with category 'Style' # Default severity for analyzer diagnostics with category 'Style'
dotnet_analyzer_diagnostic.category-Style.severity = none dotnet_analyzer_diagnostic.category-Style.severity = none
# WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method
dotnet_diagnostic.WFO1000.severity = silent
csharp_using_directive_placement = outside_namespace:silent
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent
csharp_style_conditional_delegate_call = true:suggestion
csharp_style_var_for_built_in_types = false:silent
csharp_space_around_binary_operators = before_and_after
csharp_indent_labels = one_less_than_current
csharp_style_var_when_type_is_apparent = false:silent
csharp_style_var_elsewhere = false:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_braces = true:silent
csharp_style_namespace_declarations = block_scoped:silent
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_prefer_top_level_statements = true:silent
csharp_style_prefer_primary_constructors = true:suggestion
csharp_prefer_system_threading_lock = true:suggestion
csharp_prefer_static_local_function = true:suggestion
csharp_prefer_static_anonymous_function = true:suggestion
csharp_style_prefer_readonly_struct = true:suggestion
csharp_style_prefer_readonly_struct_member = true:suggestion
csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true:silent
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true:silent
csharp_style_prefer_switch_expression = true:suggestion
csharp_style_prefer_pattern_matching = true:silent
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_prefer_not_pattern = true:suggestion
csharp_style_prefer_extended_property_pattern = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_prefer_null_check_over_type_check = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_prefer_local_over_anonymous_function = true:suggestion
csharp_style_prefer_index_operator = true:suggestion
csharp_style_prefer_range_operator = true:suggestion
csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
csharp_style_prefer_tuple_swap = true:suggestion
csharp_style_prefer_utf8_string_literals = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
[*.{cs,vb}]
#### 命名样式 ####
# 命名规则
dotnet_naming_rule.interface_should_be_以_i_开始.severity = suggestion
dotnet_naming_rule.interface_should_be_以_i_开始.symbols = interface
dotnet_naming_rule.interface_should_be_以_i_开始.style = 以_i_开始
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.severity = suggestion
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.symbols = 类型
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.style = 帕斯卡拼写法
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.severity = suggestion
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.symbols = 非字段成员
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.style = 帕斯卡拼写法
# 符号规范
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.类型.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.类型.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.类型.required_modifiers =
dotnet_naming_symbols.非字段成员.applicable_kinds = property, event, method
dotnet_naming_symbols.非字段成员.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.非字段成员.required_modifiers =
# 命名样式
dotnet_naming_style.以_i_开始.required_prefix = I
dotnet_naming_style.以_i_开始.required_suffix =
dotnet_naming_style.以_i_开始.word_separator =
dotnet_naming_style.以_i_开始.capitalization = pascal_case
dotnet_naming_style.帕斯卡拼写法.required_prefix =
dotnet_naming_style.帕斯卡拼写法.required_suffix =
dotnet_naming_style.帕斯卡拼写法.word_separator =
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case
dotnet_naming_style.帕斯卡拼写法.required_prefix =
dotnet_naming_style.帕斯卡拼写法.required_suffix =
dotnet_naming_style.帕斯卡拼写法.word_separator =
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case
end_of_line = crlf
dotnet_style_qualification_for_field = false:silent
dotnet_style_qualification_for_property = false:silent
dotnet_style_qualification_for_method = false:silent
dotnet_style_qualification_for_event = false:silent
tab_width = 4
indent_size = 4
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
dotnet_code_quality_unused_parameters = all:suggestion
dotnet_style_readonly_field = true:suggestion
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
dotnet_style_allow_multiple_blank_lines_experimental = true:silent
dotnet_style_allow_statement_immediately_after_block_experimental = true:silent
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_simplified_interpolation = true:suggestion
dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
dotnet_style_namespace_match_folder = true:suggestion
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
dotnet_style_predefined_type_for_member_access = true:silent
dotnet_diagnostic.CA2022.severity = silent

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -31,6 +31,9 @@
* 2023-05-13: V3.3.6 Option.BarInterval,Bar之间间隔-1 * 2023-05-13: V3.3.6 Option.BarInterval,Bar之间间隔-1
* 2023-05-14: V3.3.6 DrawString函数 * 2023-05-14: V3.3.6 DrawString函数
* 2023-06-06: V3.3.7 Y轴文字居中 * 2023-06-06: V3.3.7 Y轴文字居中
* 2024-06-08: V3.6.6 X轴文字带角度显示时居中
* 2024-10-25: V3.7.2 ShowData
* 2025-03-05: V3.8.1 Y轴零度线偏移量Option.ZeroLineOffset
******************************************************************************/ ******************************************************************************/
using System; using System;
@ -47,6 +50,7 @@ namespace Sunny.UI
/// 柱状图 /// 柱状图
/// </summary> /// </summary>
[ToolboxItem(true)] [ToolboxItem(true)]
[Description("柱状图控件")]
public class UIBarChart : UIChart public class UIBarChart : UIChart
{ {
private bool NeedDraw; private bool NeedDraw;
@ -208,7 +212,7 @@ namespace Sunny.UI
float ww = Math.Min(x2, series.MaxWidth); float ww = Math.Min(x2, series.MaxWidth);
xx -= ww / 2.0f; xx -= ww / 2.0f;
float YZeroPos = YScale.CalcYPixel(0, DrawOrigin.Y, DrawSize.Height); float YZeroPos = YScale.CalcYPixel(Option.ZeroLineOffset, DrawOrigin.Y, DrawSize.Height);
float VPos = YScale.CalcYPixel(series.Data[j], DrawOrigin.Y, DrawSize.Height); float VPos = YScale.CalcYPixel(series.Data[j], DrawOrigin.Y, DrawSize.Height);
if (VPos <= YZeroPos) if (VPos <= YZeroPos)
@ -254,7 +258,7 @@ namespace Sunny.UI
float ww = Math.Min(x2, series.MaxWidth); float ww = Math.Min(x2, series.MaxWidth);
float xl = (DrawBarWidth - Option.SeriesCount * ww - (Option.SeriesCount - 1) * Option.BarInterval) / 2.0f; float xl = (DrawBarWidth - Option.SeriesCount * ww - (Option.SeriesCount - 1) * Option.BarInterval) / 2.0f;
float xx = barX + xl + i * ww + i * Option.BarInterval; float xx = barX + xl + i * ww + i * Option.BarInterval;
float YZeroPos = YScale.CalcYPixel(0, DrawOrigin.Y, DrawSize.Height); float YZeroPos = YScale.CalcYPixel(Option.ZeroLineOffset, DrawOrigin.Y, DrawSize.Height);
float VPos = YScale.CalcYPixel(series.Data[j], DrawOrigin.Y, DrawSize.Height); float VPos = YScale.CalcYPixel(series.Data[j], DrawOrigin.Y, DrawSize.Height);
if (VPos <= YZeroPos) if (VPos <= YZeroPos)
@ -513,7 +517,7 @@ namespace Sunny.UI
{ {
int angle = (Option.XAxis.AxisLabel.Angle + 36000) % 360; int angle = (Option.XAxis.AxisLabel.Angle + 36000) % 360;
if (angle > 0 && angle <= 90) if (angle > 0 && angle <= 90)
g.DrawRotateString(data, TempFont, ForeColor, new PointF(start, DrawOrigin.Y + Option.XAxis.AxisTick.Length), g.DrawRotateString(data, TempFont, ForeColor, new PointF(start + DrawBarWidth / 2, DrawOrigin.Y + Option.XAxis.AxisTick.Length),
new StringFormat() { Alignment = StringAlignment.Far }, (3600 - Option.XAxis.AxisLabel.Angle) % 360); new StringFormat() { Alignment = StringAlignment.Far }, (3600 - Option.XAxis.AxisLabel.Angle) % 360);
else else
g.DrawString(data, TempFont, ForeColor, new Rectangle((int)start, DrawOrigin.Y + Option.XAxis.AxisTick.Length, (int)DrawBarWidth, Height), ContentAlignment.TopCenter); g.DrawString(data, TempFont, ForeColor, new Rectangle((int)start, DrawOrigin.Y + Option.XAxis.AxisTick.Length, (int)DrawBarWidth, Height), ContentAlignment.TopCenter);
@ -535,6 +539,11 @@ namespace Sunny.UI
double[] YLabels = YScale.CalcLabels(); double[] YLabels = YScale.CalcLabels();
float[] labels = YScale.CalcYPixels(YLabels, DrawOrigin.Y, DrawSize.Height); float[] labels = YScale.CalcYPixels(YLabels, DrawOrigin.Y, DrawSize.Height);
float wmax = 0; float wmax = 0;
using Pen pn = new Pen(ForeColor);
pn.DashStyle = DashStyle.Dash;
pn.DashPattern = new float[] { 3, 3 };
for (int i = 0; i < labels.Length; i++) for (int i = 0; i < labels.Length; i++)
{ {
if (labels[i] > DrawOrigin.Y) continue; if (labels[i] > DrawOrigin.Y) continue;
@ -545,19 +554,16 @@ namespace Sunny.UI
if (YLabels[i].IsNanOrInfinity()) continue; if (YLabels[i].IsNanOrInfinity()) continue;
if (!Option.YAxis.ShowGridLine) continue; if (!Option.YAxis.ShowGridLine) continue;
if (!YLabels[i].EqualsDouble(0)) //if (!YLabels[i].EqualsDouble(Option.ZeroLineOffset))
{ //{
using (Pen pn = new Pen(ForeColor))
{ g.DrawLine(pn, DrawOrigin.X, labels[i], Width - Option.Grid.Right, labels[i]);
pn.DashStyle = DashStyle.Dash;
pn.DashPattern = new float[] { 3, 3 }; //}
g.DrawLine(pn, DrawOrigin.X, labels[i], Width - Option.Grid.Right, labels[i]); //else
} //{
} // g.DrawLine(ForeColor, DrawOrigin.X, labels[i], Width - Option.Grid.Right, labels[i]);
else //}
{
g.DrawLine(ForeColor, DrawOrigin.X, labels[i], Width - Option.Grid.Right, labels[i]);
}
} }
if (Option.YAxis.AxisLabel.Show) if (Option.YAxis.AxisLabel.Show)
@ -576,6 +582,9 @@ namespace Sunny.UI
float yy = Option.Grid.Top + DrawSize.Height / 2.0f; float yy = Option.Grid.Top + DrawSize.Height / 2.0f;
g.DrawRotateString(Option.YAxis.Name, TempFont, ForeColor, new PointF(xx, yy), 270); g.DrawRotateString(Option.YAxis.Name, TempFont, ForeColor, new PointF(xx, yy), 270);
} }
float YZeroPos = YScale.CalcYPixel(Option.ZeroLineOffset, DrawOrigin.Y, DrawSize.Height);
g.DrawLine(ForeColor, DrawOrigin.X, YZeroPos, Width - Option.Grid.Right, YZeroPos);
} }
private void DrawAxisScales(Graphics g) private void DrawAxisScales(Graphics g)
@ -647,5 +656,23 @@ namespace Sunny.UI
public UIBarSeries Series { get; set; } public UIBarSeries Series { get; set; }
} }
public void ShowData(string[] labels, double[] values, string title = "")
{
int len = Math.Min(labels.Length, values.Length);
if (len == 0) return;
UIBarOption option = new UIBarOption();
option.Title.Text = title;
var series = new UIBarSeries();
for (int i = 0; i < len; i++)
{
option.XAxis.Data.Add(labels[i]);
series.AddData(values[i]);
}
option.Series.Add(series);
SetOption(option);
}
} }
} }

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -87,6 +87,11 @@ namespace Sunny.UI
public int BarInterval { get; set; } = -1; public int BarInterval { get; set; } = -1;
/// <summary>
/// Y轴零度线偏移
/// </summary>
public double ZeroLineOffset { get; set; } = 0;
public void AddSeries(UIBarSeries series) public void AddSeries(UIBarSeries series)
{ {
if (series == null) if (series == null)

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -73,7 +73,7 @@ namespace Sunny.UI
tip.Visible = false; tip.Visible = false;
} }
protected readonly UITransparentPanel tip = new UITransparentPanel(); internal readonly UITransparentPanel tip = new UITransparentPanel();
private UIChartStyleType chartStyleType = UIChartStyleType.Plain; private UIChartStyleType chartStyleType = UIChartStyleType.Plain;
[DefaultValue(UIChartStyleType.Plain)] [DefaultValue(UIChartStyleType.Plain)]

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -20,6 +20,7 @@
* 2021-07-22: V3.0.5 * 2021-07-22: V3.0.5
* 2022-07-29: V3.2.2 Option.DecimalPlaces * 2022-07-29: V3.2.2 Option.DecimalPlaces
* 2023-05-14: V3.3.6 DrawString函数 * 2023-05-14: V3.3.6 DrawString函数
* 2024-05-07: V3.6.6 0
******************************************************************************/ ******************************************************************************/
using System; using System;
@ -31,7 +32,7 @@ using System.Windows.Forms;
namespace Sunny.UI namespace Sunny.UI
{ {
[ToolboxItem(true), Description("甜甜圈图")] [ToolboxItem(true), Description("甜甜圈图控件")]
public sealed class UIDoughnutChart : UIChart public sealed class UIDoughnutChart : UIChart
{ {
/// <summary> /// <summary>
@ -126,12 +127,11 @@ namespace Sunny.UI
all += data.Value; all += data.Value;
} }
if (all.IsZero()) return;
float start = 0; float start = 0;
for (int i = 0; i < pie.Data.Count; i++) for (int i = 0; i < pie.Data.Count; i++)
{ {
float angle = (float)(pie.Data[i].Value * 360.0f / all); float angle = all.IsZero() ? 0 : (float)(pie.Data[i].Value * 360.0f / all);
float percent = (float)(pie.Data[i].Value * 100.0f / all); float percent = all.IsZero() ? 0 : (float)(pie.Data[i].Value * 100.0f / all);
string text = ""; string text = "";
if (Option.ToolTip != null) if (Option.ToolTip != null)
{ {
@ -166,26 +166,42 @@ namespace Sunny.UI
for (int pieIndex = 0; pieIndex < series.Count; pieIndex++) for (int pieIndex = 0; pieIndex < series.Count; pieIndex++)
{ {
var pie = series[pieIndex]; var pie = series[pieIndex];
if (pie.Data.Count == 0) continue;
for (int azIndex = 0; azIndex < pie.Data.Count; azIndex++) double all = 0;
foreach (var data in pie.Data)
{ {
Angle angle = Angles[pieIndex][azIndex]; all += data.Value;
Color color = ChartStyle.GetColor(azIndex); }
UIPieSeriesData data = pie.Data[azIndex];
if (data.StyleCustomMode) color = data.Color;
if (ActiveAzIndex == azIndex) if (all.IsZero())
g.FillFan(color, angle.Center, angle.Inner, angle.Outer + 5, angle.Start - 90, angle.Sweep); {
else Angle angle = Angles[pieIndex][0];
g.FillFan(color, angle.Center, angle.Inner, angle.Outer, angle.Start - 90, angle.Sweep); g.DrawEllipse(rectColor, new RectangleF(angle.Center.X - angle.Inner, angle.Center.Y - angle.Inner, angle.Inner * 2, angle.Inner * 2));
g.DrawEllipse(rectColor, new RectangleF(angle.Center.X - angle.Outer, angle.Center.Y - angle.Outer, angle.Outer * 2, angle.Outer * 2));
Angles[pieIndex][azIndex].TextSize = TextRenderer.MeasureText(Angles[pieIndex][azIndex].Text, TempFont); }
else
if (pie.Label.Show && ActiveAzIndex == azIndex) {
for (int azIndex = 0; azIndex < pie.Data.Count; azIndex++)
{ {
if (pie.Label.Position == UIPieSeriesLabelPosition.Center) Angle angle = Angles[pieIndex][azIndex];
Color color = ChartStyle.GetColor(azIndex);
UIPieSeriesData data = pie.Data[azIndex];
if (data.StyleCustomMode) color = data.Color;
if (ActiveAzIndex == azIndex)
g.FillFan(color, angle.Center, angle.Inner, angle.Outer + 5, angle.Start - 90, angle.Sweep);
else
g.FillFan(color, angle.Center, angle.Inner, angle.Outer, angle.Start - 90, angle.Sweep);
Angles[pieIndex][azIndex].TextSize = TextRenderer.MeasureText(Angles[pieIndex][azIndex].Text, TempFont);
if (pie.Label.Show && ActiveAzIndex == azIndex)
{ {
g.DrawString(pie.Data[azIndex].Name, Font, color, new Rectangle((int)angle.Center.X - Width, (int)angle.Center.Y - Height, Width * 2, Height * 2), ContentAlignment.MiddleCenter); if (pie.Label.Position == UIPieSeriesLabelPosition.Center)
{
g.DrawString(pie.Data[azIndex].Name, Font, color, new Rectangle((int)angle.Center.X - Width, (int)angle.Center.Y - Height, Width * 2, Height * 2), ContentAlignment.MiddleCenter);
}
} }
} }
} }
@ -233,9 +249,9 @@ namespace Sunny.UI
{ {
Angle angle = Angles[pieIndex][azIndex]; Angle angle = Angles[pieIndex][azIndex];
PointF pf = angle.Center; PointF pf = angle.Center;
if (Drawing.CalcDistance(e.Location, pf) > angle.Outer) continue; if (e.Location.CalcDistance(pf) > angle.Outer) continue;
if (Drawing.CalcDistance(e.Location, pf) < angle.Inner) continue; if (e.Location.CalcDistance(pf) < angle.Inner) continue;
double az = Drawing.CalcAngle(e.Location, pf); double az = e.Location.CalcAngle(pf);
if (az >= angle.Start && az <= angle.Start + angle.Sweep) if (az >= angle.Start && az <= angle.Start + angle.Sweep)
{ {
SetPieAndAzIndex(pieIndex, azIndex); SetPieAndAzIndex(pieIndex, azIndex);

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -48,6 +48,13 @@
* 2023-07-02: V3.3.9 PointFormat * 2023-07-02: V3.3.9 PointFormat
* 2023-07-02: V3.3.9 沿Y轴变化时鼠标移动到数据点时显示数据点标签 * 2023-07-02: V3.3.9 沿Y轴变化时鼠标移动到数据点时显示数据点标签
* 2023-07-14: V3.4.0 * 2023-07-14: V3.4.0
* 2023-10-04: V3.5.0 Y轴数据由上向下绘制
* 2023-10-05: V3.5.0 X轴和Y轴鼠标选择区域并返回选中范围
* 2023-10-20: V3.5.1 线DashStyle样式
* 2023-11-22: V3.6.0
* 2024-07-01: V3.6.7 Y轴自定义坐标显示
* 2024-11-13: V3.7.2 线
* 2024-11-14: V3.7.2 线
******************************************************************************/ ******************************************************************************/
using System; using System;
@ -62,10 +69,19 @@ using System.Windows.Forms;
namespace Sunny.UI namespace Sunny.UI
{ {
[ToolboxItem(true)] [ToolboxItem(true)]
[Description("曲线图控件")]
public class UILineChart : UIChart public class UILineChart : UIChart
{ {
protected bool NeedDraw; protected bool NeedDraw;
[DefaultValue(MouseLineType.None)]
[Description("鼠标移上绘制十字线样式"), Category("SunnyUI")]
public MouseLineType MouseLine { get; set; }
[DefaultValue(typeof(Color), "Red")]
[Description("鼠标移上绘制十字线颜色"), Category("SunnyUI")]
public Color MouseLineColor { get; set; } = Color.Red;
/// <summary> /// <summary>
/// 重载控件尺寸变更 /// 重载控件尺寸变更
/// </summary> /// </summary>
@ -77,7 +93,7 @@ namespace Sunny.UI
} }
[Browsable(false)] [Browsable(false)]
public Point DrawOrigin => new Point(Option.Grid.Left, Height - Option.Grid.Bottom); public Point DrawOrigin => new Point(Option.Grid.Left, Option.YDataOrder == UIYDataOrder.Asc ? Height - Option.Grid.Bottom : Option.Grid.Top);
[Browsable(false)] [Browsable(false)]
public Size DrawSize => new Size(Width - Option.Grid.Left - Option.Grid.Right, Height - Option.Grid.Top - Option.Grid.Bottom); public Size DrawSize => new Size(Width - Option.Grid.Left - Option.Grid.Right, Height - Option.Grid.Top - Option.Grid.Bottom);
@ -93,20 +109,20 @@ namespace Sunny.UI
NeedDraw = false; NeedDraw = false;
if (Option?.Series == null || Option.Series.Count == 0) return; if (Option?.Series == null || Option.Series.Count == 0) return;
if (DrawSize.Width <= 0 || DrawSize.Height <= 0) return; if (DrawSize.Width <= 0 || DrawSize.Height <= 0) return;
CalcAxises(); CalcAxes();
foreach (var series in Option.Series.Values) foreach (var series in Option.Series.Values)
{ {
if (series.IsY2) if (series.IsY2)
series.CalcData(this, XScale, Y2Scale); series.CalcData(this, XScale, Y2Scale, Option.YDataOrder);
else else
series.CalcData(this, XScale, YScale); series.CalcData(this, XScale, YScale, Option.YDataOrder);
if (series is UISwitchLineSeries lineSeries) if (series is UISwitchLineSeries lineSeries)
{ {
lineSeries.YOffsetPos = series.IsY2 ? lineSeries.YOffsetPos = series.IsY2 ?
Y2Scale.CalcYPixel(lineSeries.YOffset, DrawOrigin.Y, DrawSize.Height) : Y2Scale.CalcYPixel(lineSeries.YOffset, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder) :
YScale.CalcYPixel(lineSeries.YOffset, DrawOrigin.Y, DrawSize.Height); YScale.CalcYPixel(lineSeries.YOffset, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
} }
} }
@ -132,7 +148,7 @@ namespace Sunny.UI
protected UIScale YScale; protected UIScale YScale;
protected UIScale Y2Scale; protected UIScale Y2Scale;
protected void CalcAxises() protected void CalcAxes()
{ {
if (Option.XAxisType == UIAxisType.DateTime) if (Option.XAxisType == UIAxisType.DateTime)
XScale = new UIDateScale(); XScale = new UIDateScale();
@ -284,6 +300,23 @@ namespace Sunny.UI
DrawAxisScales(g); DrawAxisScales(g);
DrawPointSymbols(g); DrawPointSymbols(g);
DrawOther(g); DrawOther(g);
if (MousePoint.InRect(DrawRect))
{
switch (MouseLine)
{
case MouseLineType.Horizontal:
g.DrawLine(MouseLineColor, DrawRect.Left + 1, MousePoint.Y, DrawRect.Right - 1, MousePoint.Y);
break;
case MouseLineType.Vertical:
g.DrawLine(MouseLineColor, MousePoint.X, DrawRect.Top + 1, MousePoint.X, DrawRect.Bottom - 1);
break;
case MouseLineType.Cross:
g.DrawLine(MouseLineColor, DrawRect.Left + 1, MousePoint.Y, DrawRect.Right - 1, MousePoint.Y);
g.DrawLine(MouseLineColor, MousePoint.X, DrawRect.Top + 1, MousePoint.X, DrawRect.Bottom - 1);
break;
}
}
} }
private void DrawAxis(Graphics g) private void DrawAxis(Graphics g)
@ -298,7 +331,7 @@ namespace Sunny.UI
g.DrawLine(ForeColor, Option.Grid.Left, Height - Option.Grid.Bottom, Width - Option.Grid.Right, Height - Option.Grid.Bottom); g.DrawLine(ForeColor, Option.Grid.Left, Height - Option.Grid.Bottom, Width - Option.Grid.Right, Height - Option.Grid.Bottom);
using var TempFont = Font.DPIScaleFont(UIStyles.DefaultSubFontSize); using var TempFont = Font.DPIScaleFont(UIStyles.DefaultSubFontSize);
float zeroPos = YScale.CalcYPixel(0, DrawOrigin.Y, DrawSize.Height); float zeroPos = YScale.CalcYPixel(0, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
if (zeroPos > Option.Grid.Top && zeroPos < Height - Option.Grid.Bottom) if (zeroPos > Option.Grid.Top && zeroPos < Height - Option.Grid.Bottom)
{ {
if (Option.ShowZeroLine) if (Option.ShowZeroLine)
@ -395,13 +428,19 @@ namespace Sunny.UI
if (xx > xr && xx + sf.Width < Width) if (xx > xr && xx + sf.Width < Width)
{ {
xr = xx + sf.Width; xr = xx + sf.Width;
g.DrawString(label, TempFont, ForeColor, new Rectangle((int)x - Width, DrawOrigin.Y + Option.XAxis.AxisTick.Length, Width * 2, Height), ContentAlignment.TopCenter); if (Option.YDataOrder == UIYDataOrder.Asc)
g.DrawString(label, TempFont, ForeColor, new Rectangle((int)x - Width, DrawOrigin.Y + Option.XAxis.AxisTick.Length, Width * 2, Height), ContentAlignment.TopCenter);
else
g.DrawString(label, TempFont, ForeColor, new Rectangle((int)x - Width, 0, Width * 2, (int)(DrawOrigin.Y - Option.XAxis.AxisTick.Length)), ContentAlignment.BottomCenter);
} }
} }
if (Option.XAxis.AxisTick.Show) if (Option.XAxis.AxisTick.Show)
{ {
g.DrawLine(ForeColor, x, DrawOrigin.Y, x, DrawOrigin.Y + Option.XAxis.AxisTick.Length); if (Option.YDataOrder == UIYDataOrder.Asc)
g.DrawLine(ForeColor, x, DrawOrigin.Y, x, DrawOrigin.Y + Option.XAxis.AxisTick.Length);
else
g.DrawLine(ForeColor, x, DrawOrigin.Y, x, DrawOrigin.Y - Option.XAxis.AxisTick.Length);
} }
if (x.Equals(DrawOrigin.X)) continue; if (x.Equals(DrawOrigin.X)) continue;
@ -409,12 +448,10 @@ namespace Sunny.UI
if (Option.XAxis.ShowGridLine) if (Option.XAxis.ShowGridLine)
{ {
using (Pen pn = new Pen(ForeColor)) using Pen pn = new Pen(ForeColor);
{ pn.DashStyle = DashStyle.Dash;
pn.DashStyle = DashStyle.Dash; pn.DashPattern = new float[] { 3, 3 };
pn.DashPattern = new float[] { 3, 3 }; g.DrawLine(pn, x, DrawOrigin.Y, x, Option.Grid.Top);
g.DrawLine(pn, x, DrawOrigin.Y, x, Option.Grid.Top);
}
} }
} }
@ -424,7 +461,7 @@ namespace Sunny.UI
//Y Tick //Y Tick
{ {
double[] YLabels = Option.YAxis.HaveCustomLabels ? Option.YAxis.CustomLabels.LabelValues() : YScale.CalcLabels(); double[] YLabels = Option.YAxis.HaveCustomLabels ? Option.YAxis.CustomLabels.LabelValues() : YScale.CalcLabels();
float[] labels = YScale.CalcYPixels(YLabels, DrawOrigin.Y, DrawSize.Height); float[] labels = YScale.CalcYPixels(YLabels, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
float widthMax = 0; float widthMax = 0;
for (int i = 0; i < labels.Length; i++) for (int i = 0; i < labels.Length; i++)
{ {
@ -437,6 +474,11 @@ namespace Sunny.UI
else else
label = YLabels[i].ToString("F" + Option.YAxis.AxisLabel.DecimalPlaces); label = YLabels[i].ToString("F" + Option.YAxis.AxisLabel.DecimalPlaces);
if (Option.YAxis.HaveCustomLabels && Option.YAxis.CustomLabels.GetLabel(i).IsValid())
{
label = Option.YAxis.CustomLabels.GetLabel(i);
}
Size sf = TextRenderer.MeasureText(label, TempFont); Size sf = TextRenderer.MeasureText(label, TempFont);
widthMax = Math.Max(widthMax, sf.Width); widthMax = Math.Max(widthMax, sf.Width);
@ -455,12 +497,10 @@ namespace Sunny.UI
if (Option.YAxis.ShowGridLine) if (Option.YAxis.ShowGridLine)
{ {
using (Pen pn = new Pen(ForeColor)) using Pen pn = new Pen(ForeColor);
{ pn.DashStyle = DashStyle.Dash;
pn.DashStyle = DashStyle.Dash; pn.DashPattern = new float[] { 3, 3 };
pn.DashPattern = new float[] { 3, 3 }; g.DrawLine(pn, DrawOrigin.X, y, Width - Option.Grid.Right, y);
g.DrawLine(pn, DrawOrigin.X, y, Width - Option.Grid.Right, y);
}
} }
} }
@ -474,7 +514,7 @@ namespace Sunny.UI
if (Option.HaveY2) if (Option.HaveY2)
{ {
double[] Y2Labels = Option.Y2Axis.HaveCustomLabels ? Option.Y2Axis.CustomLabels.LabelValues() : Y2Scale.CalcLabels(); double[] Y2Labels = Option.Y2Axis.HaveCustomLabels ? Option.Y2Axis.CustomLabels.LabelValues() : Y2Scale.CalcLabels();
float[] labels = Y2Scale.CalcYPixels(Y2Labels, DrawOrigin.Y, DrawSize.Height); float[] labels = Y2Scale.CalcYPixels(Y2Labels, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
float widthMax = 0; float widthMax = 0;
for (int i = 0; i < labels.Length; i++) for (int i = 0; i < labels.Length; i++)
{ {
@ -502,16 +542,6 @@ namespace Sunny.UI
{ {
g.DrawLine(ForeColor, Width - Option.Grid.Right, y, Width - Option.Grid.Right + Option.YAxis.AxisTick.Length, y); g.DrawLine(ForeColor, Width - Option.Grid.Right, y, Width - Option.Grid.Right + Option.YAxis.AxisTick.Length, y);
} }
if (y.Equals(DrawOrigin.Y)) continue;
if (y.Equals(DrawOrigin.X - DrawSize.Height)) continue;
using (Pen pn = new Pen(ForeColor))
{
pn.DashStyle = DashStyle.Dash;
pn.DashPattern = new float[] { 3, 3 };
//g.DrawLine(pn, DrawOrigin.X, y, Width - Option.Grid.Right, y);
}
} }
Size sfName = TextRenderer.MeasureText(Option.Y2Axis.Name, TempFont); Size sfName = TextRenderer.MeasureText(Option.Y2Axis.Name, TempFont);
@ -536,47 +566,48 @@ namespace Sunny.UI
if (series.ShowLine || series.Symbol == UILinePointSymbol.None) if (series.ShowLine || series.Symbol == UILinePointSymbol.None)
{ {
using (Pen pen = new Pen(color, series.Width)) using Pen pen = new Pen(color, series.Width);
{ pen.DashStyle = series.DashStyle;
g.SetHighQuality(); if (series.DashPattern.IsValid()) pen.DashPattern = series.DashPattern;
g.SetHighQuality();
if (series is UISwitchLineSeries lineSeries) if (series is UISwitchLineSeries lineSeries)
{
List<PointF> points = new List<PointF>();
points.Add(new PointF(lineSeries.Points[0].X, lineSeries.YOffsetPos));
points.AddRange(lineSeries.Points);
points.Add(new PointF(lineSeries.Points[series.Points.Count - 1].X, lineSeries.YOffsetPos));
using var path = points.ToArray().Path();
g.FillPath(color, path);
g.DrawLine(color, points[0], points[points.Count - 1]);
points.Clear();
}
else
{
if (series.ContainsNan || !series.Smooth || series.Points.Count == 2 || ZoomAreas.Count > 5)
{ {
List<PointF> points = new List<PointF>(); for (int i = 0; i < series.Points.Count - 1; i++)
points.Add(new PointF(lineSeries.Points[0].X, lineSeries.YOffsetPos)); {
points.AddRange(lineSeries.Points); g.DrawTwoPoints(pen, series.Points[i], series.Points[i + 1], DrawRect);
points.Add(new PointF(lineSeries.Points[series.Points.Count - 1].X, lineSeries.YOffsetPos)); }
g.FillPath(color, points.ToArray().Path());
g.DrawLine(color, points[0], points[points.Count - 1]);
points.Clear();
} }
else else
{ {
if (series.ContainsNan || !series.Smooth || series.Points.Count == 2 || ZoomAreas.Count > 5) try
{
g.DrawCurve(pen, series.Points.ToArray());
}
catch
{ {
for (int i = 0; i < series.Points.Count - 1; i++) for (int i = 0; i < series.Points.Count - 1; i++)
{ {
g.DrawTwoPoints(pen, series.Points[i], series.Points[i + 1], DrawRect); g.DrawTwoPoints(pen, series.Points[i], series.Points[i + 1], DrawRect);
} }
} }
else
{
try
{
g.DrawCurve(pen, series.Points.ToArray());
}
catch
{
for (int i = 0; i < series.Points.Count - 1; i++)
{
g.DrawTwoPoints(pen, series.Points[i], series.Points[i + 1], DrawRect);
}
}
}
} }
g.SetDefaultQuality();
} }
g.SetDefaultQuality();
} }
} }
@ -601,10 +632,8 @@ namespace Sunny.UI
{ {
Color color = series.Color; Color color = series.Color;
if (!series.CustomColor) color = ChartStyle.GetColor(idx); if (!series.CustomColor) color = ChartStyle.GetColor(idx);
using (Graphics graphics = bmp.Graphics()) using Graphics graphics = bmp.Graphics();
{ DrawSeries(graphics, color, series);
DrawSeries(graphics, color, series);
}
idx++; idx++;
} }
@ -644,7 +673,7 @@ namespace Sunny.UI
if (Option.GreaterWarningArea != null) if (Option.GreaterWarningArea != null)
{ {
wTop = YScale.CalcYPixel(Option.GreaterWarningArea.Value, DrawOrigin.Y, DrawSize.Height); wTop = YScale.CalcYPixel(Option.GreaterWarningArea.Value, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
if (wTop < Option.Grid.Top) if (wTop < Option.Grid.Top)
{ {
wTop = Option.Grid.Top; wTop = Option.Grid.Top;
@ -660,7 +689,7 @@ namespace Sunny.UI
if (Option.LessWarningArea != null) if (Option.LessWarningArea != null)
{ {
wBottom = YScale.CalcYPixel(Option.LessWarningArea.Value, DrawOrigin.Y, DrawSize.Height); wBottom = YScale.CalcYPixel(Option.LessWarningArea.Value, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
if (wBottom > Height - Option.Grid.Bottom) if (wBottom > Height - Option.Grid.Bottom)
{ {
wBottom = Height - Option.Grid.Bottom; wBottom = Height - Option.Grid.Bottom;
@ -690,71 +719,68 @@ namespace Sunny.UI
if (series.Symbol != UILinePointSymbol.None) if (series.Symbol != UILinePointSymbol.None)
{ {
using (Brush br = new SolidBrush(FillColor)) using Brush br = new SolidBrush(FillColor);
using (Brush br1 = new SolidBrush(color)) using Brush br1 = new SolidBrush(color);
using (Pen pn = new Pen(color, series.SymbolLineWidth)) using Pen pn = new Pen(color, series.SymbolLineWidth);
{
foreach (var p in series.Points)
{
if (p.X < Option.Grid.Left || p.X > Width - Option.Grid.Right) continue;
if (p.Y < Option.Grid.Top || p.Y > Height - Option.Grid.Bottom) continue;
if (double.IsNaN(p.X) || double.IsNaN(p.Y)) continue;
switch (series.Symbol) foreach (var p in series.Points)
{ {
case UILinePointSymbol.Square: if (p.X < Option.Grid.Left || p.X > Width - Option.Grid.Right) continue;
g.FillRectangle(br, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2); if (p.Y < Option.Grid.Top || p.Y > Height - Option.Grid.Bottom) continue;
g.DrawRectangle(pn, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2); if (double.IsNaN(p.X) || double.IsNaN(p.Y)) continue;
break;
case UILinePointSymbol.Diamond: switch (series.Symbol)
{ {
PointF pt1 = new PointF(p.X - series.SymbolSize, p.Y); case UILinePointSymbol.Square:
PointF pt2 = new PointF(p.X, p.Y - series.SymbolSize); g.FillRectangle(br, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2);
PointF pt3 = new PointF(p.X + series.SymbolSize, p.Y); g.DrawRectangle(pn, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2);
PointF pt4 = new PointF(p.X, p.Y + series.SymbolSize); break;
PointF[] pts = { pt1, pt2, pt3, pt4, pt1 }; case UILinePointSymbol.Diamond:
g.SetHighQuality(); {
GraphicsPath path = pts.Path(); PointF pt1 = new PointF(p.X - series.SymbolSize, p.Y);
g.FillPath(br, path); PointF pt2 = new PointF(p.X, p.Y - series.SymbolSize);
g.DrawPath(pn, path); PointF pt3 = new PointF(p.X + series.SymbolSize, p.Y);
path.Dispose(); PointF pt4 = new PointF(p.X, p.Y + series.SymbolSize);
} PointF[] pts = { pt1, pt2, pt3, pt4, pt1 };
break;
case UILinePointSymbol.Triangle:
{
PointF pt1 = new PointF(p.X, p.Y - series.SymbolSize);
PointF pt2 = new PointF(p.X - series.SymbolSize * 0.866f, p.Y + series.SymbolSize * 0.5f);
PointF pt3 = new PointF(p.X + series.SymbolSize * 0.866f, p.Y + series.SymbolSize * 0.5f);
PointF[] pts = { pt1, pt2, pt3, pt1 };
g.SetHighQuality();
GraphicsPath path = pts.Path();
g.FillPath(br, path);
g.DrawPath(pn, path);
path.Dispose();
}
break;
case UILinePointSymbol.Circle:
g.SetHighQuality(); g.SetHighQuality();
g.FillEllipse(br, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2); using GraphicsPath path = pts.Path();
g.DrawEllipse(pn, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2); g.FillPath(br, path);
break; g.DrawPath(pn, path);
case UILinePointSymbol.Round: }
break;
case UILinePointSymbol.Triangle:
{
PointF pt1 = new PointF(p.X, p.Y - series.SymbolSize);
PointF pt2 = new PointF(p.X - series.SymbolSize * 0.866f, p.Y + series.SymbolSize * 0.5f);
PointF pt3 = new PointF(p.X + series.SymbolSize * 0.866f, p.Y + series.SymbolSize * 0.5f);
PointF[] pts = { pt1, pt2, pt3, pt1 };
g.SetHighQuality(); g.SetHighQuality();
g.FillEllipse(br1, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2); using GraphicsPath path = pts.Path();
break; g.FillPath(br, path);
case UILinePointSymbol.Plus: g.DrawPath(pn, path);
g.DrawLine(pn, p.X - series.SymbolSize, p.Y, p.X + series.SymbolSize, p.Y); }
g.DrawLine(pn, p.X, p.Y - series.SymbolSize, p.X, p.Y + series.SymbolSize); break;
break; case UILinePointSymbol.Circle:
case UILinePointSymbol.Star: g.SetHighQuality();
g.SetHighQuality(); g.FillEllipse(br, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2);
g.DrawLine(pn, p.X, p.Y - series.SymbolSize, p.X, p.Y + series.SymbolSize); g.DrawEllipse(pn, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2);
g.DrawLine(pn, p.X - series.SymbolSize * 0.866f, p.Y + series.SymbolSize * 0.5f, break;
p.X + series.SymbolSize * 0.866f, p.Y - series.SymbolSize * 0.5f); case UILinePointSymbol.Round:
g.DrawLine(pn, p.X - series.SymbolSize * 0.866f, p.Y - series.SymbolSize * 0.5f, g.SetHighQuality();
p.X + series.SymbolSize * 0.866f, p.Y + series.SymbolSize * 0.5f); g.FillEllipse(br1, p.X - series.SymbolSize, p.Y - series.SymbolSize, series.SymbolSize * 2, series.SymbolSize * 2);
break; break;
} case UILinePointSymbol.Plus:
g.DrawLine(pn, p.X - series.SymbolSize, p.Y, p.X + series.SymbolSize, p.Y);
g.DrawLine(pn, p.X, p.Y - series.SymbolSize, p.X, p.Y + series.SymbolSize);
break;
case UILinePointSymbol.Star:
g.SetHighQuality();
g.DrawLine(pn, p.X, p.Y - series.SymbolSize, p.X, p.Y + series.SymbolSize);
g.DrawLine(pn, p.X - series.SymbolSize * 0.866f, p.Y + series.SymbolSize * 0.5f,
p.X + series.SymbolSize * 0.866f, p.Y - series.SymbolSize * 0.5f);
g.DrawLine(pn, p.X - series.SymbolSize * 0.866f, p.Y - series.SymbolSize * 0.5f,
p.X + series.SymbolSize * 0.866f, p.Y + series.SymbolSize * 0.5f);
break;
} }
} }
@ -770,22 +796,19 @@ namespace Sunny.UI
{ {
foreach (var line in Option.YAxisScaleLines) foreach (var line in Option.YAxisScaleLines)
{ {
float pos = YScale.CalcYPixel(line.Value, DrawOrigin.Y, DrawSize.Height); float pos = YScale.CalcYPixel(line.Value, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
if (pos <= Option.Grid.Top || pos >= Height - Option.Grid.Bottom) continue; if (pos <= Option.Grid.Top || pos >= Height - Option.Grid.Bottom) continue;
using (Pen pn = new Pen(line.Color, line.Size)) using Pen pn = new Pen(line.Color, line.Size);
if (line.DashDot)
{ {
if (line.DashDot) pn.DashStyle = DashStyle.Dash;
{ pn.DashPattern = new float[] { 3, 3 };
pn.DashStyle = DashStyle.Dash;
pn.DashPattern = new float[] { 3, 3 };
}
g.DrawLine(pn, DrawOrigin.X + 1, pos, Width - Option.Grid.Right - 1, pos);
} }
g.DrawLine(pn, DrawOrigin.X + 1, pos, Width - Option.Grid.Right - 1, pos);
g.DrawString(line.Name, TempFont, line.Color, new Rectangle(DrawOrigin.X + 4, (int)pos - 2 - Height, DrawSize.Width - 8, Height), (StringAlignment)((int)line.Left), StringAlignment.Far); g.DrawString(line.Name, TempFont, line.Color, new Rectangle(DrawOrigin.X + 4, (int)pos - 2 - Height, DrawSize.Width - 8, Height), (StringAlignment)((int)line.Left), StringAlignment.Far);
} }
} }
@ -794,25 +817,24 @@ namespace Sunny.UI
{ {
foreach (var line in Option.Y2AxisScaleLines) foreach (var line in Option.Y2AxisScaleLines)
{ {
float pos = Y2Scale.CalcYPixel(line.Value, DrawOrigin.Y, DrawSize.Height); float pos = Y2Scale.CalcYPixel(line.Value, DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
if (pos <= Option.Grid.Top || pos >= Height - Option.Grid.Bottom) continue; if (pos <= Option.Grid.Top || pos >= Height - Option.Grid.Bottom) continue;
using (Pen pn = new Pen(line.Color, line.Size)) using Pen pn = new Pen(line.Color, line.Size);
if (line.DashDot)
{ {
if (line.DashDot) pn.DashStyle = DashStyle.Dash;
{ pn.DashPattern = new float[] { 3, 3 };
pn.DashStyle = DashStyle.Dash;
pn.DashPattern = new float[] { 3, 3 };
}
g.DrawLine(pn, DrawOrigin.X + 1, pos, Width - Option.Grid.Right - 1, pos);
} }
g.DrawLine(pn, DrawOrigin.X + 1, pos, Width - Option.Grid.Right - 1, pos);
g.DrawString(line.Name, TempFont, line.Color, new Rectangle(DrawOrigin.X + 4, (int)pos - 2 - Height, DrawSize.Width - 8, Height), (StringAlignment)((int)line.Left), StringAlignment.Far); g.DrawString(line.Name, TempFont, line.Color, new Rectangle(DrawOrigin.X + 4, (int)pos - 2 - Height, DrawSize.Width - 8, Height), (StringAlignment)((int)line.Left), StringAlignment.Far);
} }
} }
int idx = 0; int idx = 0;
float xmin = -9999;
float ymin = Option.Grid.Top + 4;
if (XScale != null) if (XScale != null)
{ {
foreach (var line in Option.XAxisScaleLines) foreach (var line in Option.XAxisScaleLines)
@ -820,27 +842,31 @@ namespace Sunny.UI
float pos = XScale.CalcXPixel(line.Value, DrawOrigin.X, DrawSize.Width); float pos = XScale.CalcXPixel(line.Value, DrawOrigin.X, DrawSize.Width);
if (pos <= Option.Grid.Left || pos >= Width - Option.Grid.Right) continue; if (pos <= Option.Grid.Left || pos >= Width - Option.Grid.Right) continue;
using (Pen pn = new Pen(line.Color, line.Size)) using Pen pn = new Pen(line.Color, line.Size);
if (line.DashDot)
{ {
if (line.DashDot) pn.DashStyle = DashStyle.Dash;
{ pn.DashPattern = new float[] { 3, 3 };
pn.DashStyle = DashStyle.Dash;
pn.DashPattern = new float[] { 3, 3 };
}
g.DrawLine(pn, pos, DrawOrigin.Y - 1, pos, Option.Grid.Top + 1);
} }
g.DrawLine(pn, pos, Height - Option.Grid.Bottom - 1, pos, Option.Grid.Top + 1);
Size sf = TextRenderer.MeasureText(line.Name, TempFont); Size sf = TextRenderer.MeasureText(line.Name, TempFont);
float x = pos - sf.Width; float x = pos - sf.Width;
if (x < Option.Grid.Left) x = pos + 2; if (x < Option.Grid.Left) x = pos + 2;
float y = Option.Grid.Top + 4 + sf.Height * idx; float y;
if (x > xmin)
y = ymin;
else
y = ymin + sf.Height;
if (y > Height - Option.Grid.Bottom) if (y > Height - Option.Grid.Bottom)
{ {
idx = 0; y = Option.Grid.Top + 4;
y = Option.Grid.Top + 4 + sf.Height * idx;
} }
xmin = x + sf.Width;
ymin = y;
idx++; idx++;
g.DrawString(line.Name, TempFont, line.Color, new Rectangle((int)x, (int)y, Width, Height), ContentAlignment.TopLeft); g.DrawString(line.Name, TempFont, line.Color, new Rectangle((int)x, (int)y, Width, Height), ContentAlignment.TopLeft);
} }
@ -850,6 +876,7 @@ namespace Sunny.UI
private readonly List<UILineSelectPoint> selectPoints = new List<UILineSelectPoint>(); private readonly List<UILineSelectPoint> selectPoints = new List<UILineSelectPoint>();
private readonly List<UILineSelectPoint> selectPointsTemp = new List<UILineSelectPoint>(); private readonly List<UILineSelectPoint> selectPointsTemp = new List<UILineSelectPoint>();
public Point MousePoint;
/// <summary> /// <summary>
/// 重载鼠标移动事件 /// 重载鼠标移动事件
/// </summary> /// </summary>
@ -954,12 +981,10 @@ namespace Sunny.UI
} }
else else
{ {
using (Graphics g = this.CreateGraphics()) using Graphics g = this.CreateGraphics();
{ using var TempFont = Font.DPIScaleFont(UIStyles.DefaultSubFontSize);
using var TempFont = Font.DPIScaleFont(UIStyles.DefaultSubFontSize); Size sf = TextRenderer.MeasureText(sb.ToString(), TempFont);
Size sf = TextRenderer.MeasureText(sb.ToString(), TempFont); tip.Size = new Size(sf.Width + 4, sf.Height + 10);
tip.Size = new Size(sf.Width + 4, sf.Height + 4);
}
int x = e.Location.X + 15; int x = e.Location.X + 15;
int y = e.Location.Y + 20; int y = e.Location.Y + 20;
@ -984,13 +1009,43 @@ namespace Sunny.UI
} }
else else
{ {
if (MouseZoom && e.Button == MouseButtons.Left && e.X > Option.Grid.Left && e.X < Width - Option.Grid.Right && switch (MouseDownType)
e.Y > Option.Grid.Top && e.Y < Height - Option.Grid.Bottom)
{ {
StopPoint = e.Location; case UILineChartMouseDownType.Zoom:
Invalidate(); if (MouseZoom && e.Button == MouseButtons.Left &&
e.X > Option.Grid.Left && e.X < Width - Option.Grid.Right &&
e.Y > Option.Grid.Top && e.Y < Height - Option.Grid.Bottom)
{
StopPoint = e.Location;
Invalidate();
}
break;
case UILineChartMouseDownType.XArea:
if (e.Button == MouseButtons.Left &&
e.X > Option.Grid.Left && e.X < Width - Option.Grid.Right &&
e.Y > Option.Grid.Top && e.Y < Height - Option.Grid.Bottom)
{
StopPoint = e.Location;
Invalidate();
}
break;
case UILineChartMouseDownType.YArea:
if (e.Button == MouseButtons.Left &&
e.X > Option.Grid.Left && e.X < Width - Option.Grid.Right &&
e.Y > Option.Grid.Top && e.Y < Height - Option.Grid.Bottom)
{
StopPoint = e.Location;
Invalidate();
}
break;
default:
break;
} }
} }
MousePoint = e.Location;
if (MouseLine != MouseLineType.None) Invalidate();
} }
public delegate void OnPointValue(object sender, UILineSelectPoint[] points); public delegate void OnPointValue(object sender, UILineSelectPoint[] points);
@ -1005,6 +1060,8 @@ namespace Sunny.UI
private Point StartPoint, StopPoint; private Point StartPoint, StopPoint;
public UILineChartMouseDownType MouseDownType { get; set; } = UILineChartMouseDownType.Zoom;
/// <summary> /// <summary>
/// 重载鼠标按下事件 /// 重载鼠标按下事件
/// </summary> /// </summary>
@ -1013,16 +1070,44 @@ namespace Sunny.UI
{ {
base.OnMouseDown(e); base.OnMouseDown(e);
if (MouseZoom && e.Button == MouseButtons.Left && e.X > Option.Grid.Left && e.X < Width - Option.Grid.Right && switch (MouseDownType)
e.Y > Option.Grid.Top && e.Y < Height - Option.Grid.Bottom)
{ {
IsMouseDown = true; case UILineChartMouseDownType.Zoom:
StartPoint = StopPoint = e.Location; if (MouseZoom && e.Button == MouseButtons.Left &&
} e.X > Option.Grid.Left && e.X < Width - Option.Grid.Right &&
e.Y > Option.Grid.Top && e.Y < Height - Option.Grid.Bottom)
{
IsMouseDown = true;
StartPoint = StopPoint = e.Location;
}
if (MouseZoom && e.Button == MouseButtons.Right && ContextMenuStrip == null) if (MouseZoom && e.Button == MouseButtons.Right && ContextMenuStrip == null)
{ {
ZoomBack(); ZoomBack();
}
break;
case UILineChartMouseDownType.XArea:
if (e.Button == MouseButtons.Left &&
e.X > Option.Grid.Left && e.X < Width - Option.Grid.Right &&
e.Y > Option.Grid.Top && e.Y < Height - Option.Grid.Bottom)
{
IsMouseDown = true;
StartPoint = StopPoint = e.Location;
}
break;
case UILineChartMouseDownType.YArea:
if (e.Button == MouseButtons.Left &&
e.X > Option.Grid.Left && e.X < Width - Option.Grid.Right &&
e.Y > Option.Grid.Top && e.Y < Height - Option.Grid.Bottom)
{
IsMouseDown = true;
StartPoint = StopPoint = e.Location;
}
break;
default:
break;
} }
} }
@ -1034,11 +1119,52 @@ namespace Sunny.UI
{ {
base.OnMouseUp(e); base.OnMouseUp(e);
if (MouseZoom && IsMouseDown) switch (MouseDownType)
{ {
IsMouseDown = false; case UILineChartMouseDownType.Zoom:
Invalidate(); if (MouseZoom && IsMouseDown)
Zoom(); {
IsMouseDown = false;
Invalidate();
Zoom();
}
break;
case UILineChartMouseDownType.XArea:
if (IsMouseDown)
{
IsMouseDown = false;
Invalidate();
double XMin = XScale.CalcXPos(Math.Min(StartPoint.X, StopPoint.X), DrawOrigin.X, DrawSize.Width);
double XMax = XScale.CalcXPos(Math.Max(StartPoint.X, StopPoint.X), DrawOrigin.X, DrawSize.Width);
if (!XMax.EqualsDouble(XMin))
MouseAreaSelected?.Invoke(this, MouseDownType, XMin, XMax, "X");
}
break;
case UILineChartMouseDownType.YArea:
if (IsMouseDown)
{
IsMouseDown = false;
Invalidate();
double y1 = YScale.CalcYPos(Math.Min(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
double y2 = YScale.CalcYPos(Math.Max(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
if (!y2.EqualsDouble(y1))
MouseAreaSelected?.Invoke(this, MouseDownType, Math.Min(y1, y2), Math.Max(y1, y2), "Y");
if (Option.HaveY2)
{
y1 = Y2Scale.CalcYPos(Math.Min(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
y2 = Y2Scale.CalcYPos(Math.Max(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
if (!y2.EqualsDouble(y1))
MouseAreaSelected?.Invoke(this, MouseDownType, Math.Min(y1, y2), Math.Max(y1, y2), "Y2");
}
}
break;
default:
break;
} }
} }
@ -1085,13 +1211,18 @@ namespace Sunny.UI
var zoomArea = new ZoomArea(); var zoomArea = new ZoomArea();
zoomArea.XMin = XScale.CalcXPos(Math.Min(StartPoint.X, StopPoint.X), DrawOrigin.X, DrawSize.Width); zoomArea.XMin = XScale.CalcXPos(Math.Min(StartPoint.X, StopPoint.X), DrawOrigin.X, DrawSize.Width);
zoomArea.XMax = XScale.CalcXPos(Math.Max(StartPoint.X, StopPoint.X), DrawOrigin.X, DrawSize.Width); zoomArea.XMax = XScale.CalcXPos(Math.Max(StartPoint.X, StopPoint.X), DrawOrigin.X, DrawSize.Width);
zoomArea.YMax = YScale.CalcYPos(Math.Min(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height);
zoomArea.YMin = YScale.CalcYPos(Math.Max(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height); double y1 = YScale.CalcYPos(Math.Min(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
double y2 = YScale.CalcYPos(Math.Max(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
zoomArea.YMax = Math.Max(y1, y2);
zoomArea.YMin = Math.Min(y1, y2);
if (Option.HaveY2) if (Option.HaveY2)
{ {
zoomArea.Y2Max = Y2Scale.CalcYPos(Math.Min(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height); y1 = Y2Scale.CalcYPos(Math.Min(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
zoomArea.Y2Min = Y2Scale.CalcYPos(Math.Max(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height); y2 = Y2Scale.CalcYPos(Math.Max(StartPoint.Y, StopPoint.Y), DrawOrigin.Y, DrawSize.Height, Option.YDataOrder);
zoomArea.Y2Max = Math.Max(y1, y2);
zoomArea.Y2Min = Math.Min(y1, y2);
} }
AddZoomArea(zoomArea); AddZoomArea(zoomArea);
@ -1200,16 +1331,49 @@ namespace Sunny.UI
if (IsMouseDown) if (IsMouseDown)
{ {
Color color = Color.FromArgb(50, UIColor.Blue); Color color = Color.FromArgb(50, UIColor.Blue);
g.FillRectangle(color,
Math.Min(StartPoint.X, StopPoint.X),
Math.Min(StartPoint.Y, StopPoint.Y), switch (MouseDownType)
Math.Abs(StopPoint.X - StartPoint.X), {
Math.Abs(StopPoint.Y - StartPoint.Y)); case UILineChartMouseDownType.Zoom:
g.DrawRectangle(UIColor.Blue, g.FillRectangle(color,
Math.Min(StartPoint.X, StopPoint.X), Math.Min(StartPoint.X, StopPoint.X),
Math.Min(StartPoint.Y, StopPoint.Y), Math.Min(StartPoint.Y, StopPoint.Y),
Math.Abs(StopPoint.X - StartPoint.X), Math.Abs(StopPoint.X - StartPoint.X),
Math.Abs(StopPoint.Y - StartPoint.Y)); Math.Abs(StopPoint.Y - StartPoint.Y));
g.DrawRectangle(UIColor.Blue,
Math.Min(StartPoint.X, StopPoint.X),
Math.Min(StartPoint.Y, StopPoint.Y),
Math.Abs(StopPoint.X - StartPoint.X),
Math.Abs(StopPoint.Y - StartPoint.Y));
break;
case UILineChartMouseDownType.XArea:
g.FillRectangle(color,
Math.Min(StartPoint.X, StopPoint.X),
Option.Grid.Top,
Math.Abs(StopPoint.X - StartPoint.X),
DrawSize.Height);
g.DrawRectangle(UIColor.Blue,
Math.Min(StartPoint.X, StopPoint.X),
Option.Grid.Top,
Math.Abs(StopPoint.X - StartPoint.X),
DrawSize.Height);
break;
case UILineChartMouseDownType.YArea:
g.FillRectangle(color,
Option.Grid.Left,
Math.Min(StartPoint.Y, StopPoint.Y),
DrawSize.Width,
Math.Abs(StopPoint.Y - StartPoint.Y));
g.DrawRectangle(UIColor.Blue,
Option.Grid.Left,
Math.Min(StartPoint.Y, StopPoint.Y),
DrawSize.Width,
Math.Abs(StopPoint.Y - StartPoint.Y));
break;
default:
break;
}
} }
} }
@ -1218,5 +1382,7 @@ namespace Sunny.UI
base.OnMouseDoubleClick(e); base.OnMouseDoubleClick(e);
if (e.Button == MouseButtons.Left) ZoomNormal(); if (e.Button == MouseButtons.Left) ZoomNormal();
} }
public event OnMouseAreaSelected MouseAreaSelected;
} }
} }

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -28,16 +28,40 @@ using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq; using System.Linq;
namespace Sunny.UI namespace Sunny.UI
{ {
public enum MouseLineType
{
None,
Horizontal,
Vertical,
Cross
}
public enum UISeriesDataOrder public enum UISeriesDataOrder
{ {
X, X,
Y Y
} }
public enum UIYDataOrder
{
Asc,
Desc
}
public enum UILineChartMouseDownType
{
Zoom,
XArea,
YArea
}
public delegate void OnMouseAreaSelected(object sender, UILineChartMouseDownType mouseDownType, double minValue, double maxValue, string axis);
public sealed class UILineOption : UIOption, IDisposable public sealed class UILineOption : UIOption, IDisposable
{ {
public bool ShowZeroLine { get; set; } = true; public bool ShowZeroLine { get; set; } = true;
@ -52,6 +76,8 @@ namespace Sunny.UI
public UILineToolTip ToolTip { get; private set; } = new UILineToolTip(); public UILineToolTip ToolTip { get; private set; } = new UILineToolTip();
public UIYDataOrder YDataOrder { get; set; } = UIYDataOrder.Asc;
/// <summary> /// <summary>
/// 析构函数 /// 析构函数
/// </summary> /// </summary>
@ -479,6 +505,10 @@ namespace Sunny.UI
public float Width { get; set; } = 2; public float Width { get; set; } = 2;
public Color Color { get; set; } public Color Color { get; set; }
public DashStyle DashStyle { get; set; } = DashStyle.Solid;
public float[] DashPattern { get; set; }
public UILinePointSymbol Symbol { get; set; } = UILinePointSymbol.None; public UILinePointSymbol Symbol { get; set; } = UILinePointSymbol.None;
/// <summary> /// <summary>
@ -663,11 +693,11 @@ namespace Sunny.UI
} }
} }
internal void CalcData(UILineChart chart, UIScale XScale, UIScale YScale) internal void CalcData(UILineChart chart, UIScale XScale, UIScale YScale, UIYDataOrder order = UIYDataOrder.Asc)
{ {
ClearPoints(); ClearPoints();
float[] x = XScale.CalcXPixels(XData.ToArray(), chart.DrawOrigin.X, chart.DrawSize.Width); float[] x = XScale.CalcXPixels(XData.ToArray(), chart.DrawOrigin.X, chart.DrawSize.Width);
float[] y = YScale.CalcYPixels(YData.ToArray(), chart.DrawOrigin.Y, chart.DrawSize.Height); float[] y = YScale.CalcYPixels(YData.ToArray(), chart.DrawOrigin.Y, chart.DrawSize.Height, order);
AddPoints(x, y); AddPoints(x, y);
} }
@ -726,11 +756,6 @@ namespace Sunny.UI
public UILineSeries Series { get; set; } public UILineSeries Series { get; set; }
public SeriesDataPoint()
{
}
public SeriesDataPoint(UILineSeries series, double x, double y) public SeriesDataPoint(UILineSeries series, double x, double y)
{ {
X = x; X = x;

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -32,6 +32,7 @@ using System.Windows.Forms;
namespace Sunny.UI namespace Sunny.UI
{ {
[ToolboxItem(true)] [ToolboxItem(true)]
[Description("饼状图控件")]
public sealed class UIPieChart : UIChart public sealed class UIPieChart : UIChart
{ {
/// <summary> /// <summary>
@ -273,9 +274,9 @@ namespace Sunny.UI
if (!e.Location.InRect(rect)) continue; if (!e.Location.InRect(rect)) continue;
PointF pf = new PointF(rect.Left + rect.Width / 2.0f, rect.Top + rect.Height / 2.0f); PointF pf = new PointF(rect.Left + rect.Width / 2.0f, rect.Top + rect.Height / 2.0f);
if (Drawing.CalcDistance(e.Location, pf) * 2 > rect.Width) continue; if (e.Location.CalcDistance(pf) * 2 > rect.Width) continue;
double az = Drawing.CalcAngle(e.Location, pf); double az = e.Location.CalcAngle(pf);
for (int azIndex = 0; azIndex < Option.Series[pieIndex].Data.Count; azIndex++) for (int azIndex = 0; azIndex < Option.Series[pieIndex].Data.Count; azIndex++)
{ {
Angle angle = Angles[pieIndex][azIndex]; Angle angle = Angles[pieIndex][azIndex];

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -56,14 +56,20 @@ namespace Sunny.UI
return (float)(_min + (value - origin) * (_max - _min) * 1.0f / width); return (float)(_min + (value - origin) * (_max - _min) * 1.0f / width);
} }
public float CalcYPixel(double value, int origin, int height) public float CalcYPixel(double value, int origin, int height, UIYDataOrder order = UIYDataOrder.Asc)
{ {
return origin - (float)((value - _min) * 1.0f * height / (_max - _min)); if (order == UIYDataOrder.Asc)
return origin - (float)((value - _min) * 1.0f * height / (_max - _min));
else
return origin + (float)((value - _min) * 1.0f * height / (_max - _min));
} }
public double CalcYPos(double value, int origin, int height) public double CalcYPos(double value, int origin, int height, UIYDataOrder order)
{ {
return (float)(_min + (origin - value) * (_max - _min) * 1.0f / height); if (order == UIYDataOrder.Asc)
return (float)(_min + (origin - value) * (_max - _min) * 1.0f / height);
else
return (float)(_min + (value - origin) * (_max - _min) * 1.0f / height);
} }
public float[] CalcXPixels(double[] labels, int origin, int width) public float[] CalcXPixels(double[] labels, int origin, int width)
@ -81,7 +87,7 @@ namespace Sunny.UI
return result; return result;
} }
public float[] CalcYPixels(double[] labels, int origin, int height) public float[] CalcYPixels(double[] labels, int origin, int height, UIYDataOrder order = UIYDataOrder.Asc)
{ {
if (labels == null) return null; if (labels == null) return null;
float[] result = new float[labels.Length]; float[] result = new float[labels.Length];
@ -90,7 +96,7 @@ namespace Sunny.UI
if (labels[i].IsInfinity() || labels[i].IsNan()) if (labels[i].IsInfinity() || labels[i].IsNan())
result[i] = float.NaN; result[i] = float.NaN;
else else
result[i] = CalcYPixel(labels[i], origin, height); result[i] = CalcYPixel(labels[i], origin, height, order);
} }
return result; return result;

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,133 @@
using System;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Microsoft.Win32;
namespace Sunny.UI
{
public static class ApplicationEx
{
private static readonly string StartUpPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
/// <summary>
/// 获取当前应用程序的 GUID
/// </summary>
/// <returns>应用程序的 GUID</returns>
public static Guid AppGuid()
{
var asm = Assembly.GetEntryAssembly();
if (asm == null) return Guid.Empty;
object[] attr = (asm.GetCustomAttributes(typeof(GuidAttribute), true));
return attr.Length > 0 && attr[0] is GuidAttribute ga ? new Guid(ga.Value) : Guid.Empty;
}
/// <summary>
/// 获取指定特殊文件夹的路径,并处理路径格式
/// </summary>
/// <param name="specialFolder">特殊文件夹枚举</param>
/// <returns>处理后的文件夹路径</returns>
public static string Folder(this Environment.SpecialFolder specialFolder) => Environment.GetFolderPath(specialFolder).DealPath();
/// <summary>
/// 获取指定特殊文件夹下的应用程序文件夹路径,并在必要时创建该文件夹
/// </summary>
/// <param name="specialFolder">特殊文件夹枚举</param>
/// <param name="createIfNotExists">如果文件夹不存在,是否创建</param>
/// <returns>应用程序文件夹路径</returns>
public static string FolderWithApplication(this Environment.SpecialFolder specialFolder, bool createIfNotExists = true)
{
var dir = (specialFolder.Folder() + Application.ProductName).DealPath();
if (createIfNotExists) Dir.CreateDir(dir);
return dir;
}
/// <summary>
/// 获取当前漫游用户的应用程序特定数据的公共储存库的目录
/// C:\Users\{YourUserName}\AppData\Roaming\{Application.ProductName}\
/// </summary>
/// <returns>应用程序数据文件夹路径</returns>
public static string ApplicationDataFolder() => Environment.SpecialFolder.ApplicationData.FolderWithApplication();
/// <summary>
/// 获取当前非漫游用户使用的应用程序特定数据的公共储存库的目录
/// C:\Users\{YourUserName}\AppData\Local\{Application.ProductName}\
/// </summary>
/// <returns>本地应用程序数据文件夹路径</returns>
public static string LocalApplicationDataFolder() => Environment.SpecialFolder.LocalApplicationData.FolderWithApplication();
/// <summary>
/// 获取所有用户使用的应用程序特定数据的公共储存库的目录
/// C:\ProgramData \{Application.ProductName}\
/// </summary>
/// <returns>公共应用程序数据文件夹路径</returns>
public static string CommonApplicationDataFolder() => Environment.SpecialFolder.CommonApplicationData.FolderWithApplication();
/// <summary>
/// 增加当前程序到开机自动运行
/// </summary>
/// <param name="arguments">启动参数</param>
public static void AddToStartup(string arguments)
{
using var key = Registry.CurrentUser.OpenSubKey(StartUpPath, true);
key?.SetValue(Application.ProductName, $"\"{Application.ExecutablePath}\" {arguments}");
}
/// <summary>
/// 增加当前程序到开机自动运行
/// </summary>
public static void AddToStartup()
{
using var key = Registry.CurrentUser.OpenSubKey(StartUpPath, true);
key?.SetValue(Application.ProductName, $"\"{Application.ExecutablePath}\"");
}
/// <summary>
/// 从开机自动运行移除当前程序
/// </summary>
public static void RemoveFromStartup()
{
using var key = Registry.CurrentUser.OpenSubKey(StartUpPath, true);
if (Application.ProductName != null) key?.DeleteValue(Application.ProductName, false);
}
/// <summary>
/// 判断当前程序是否开机自动运行
/// </summary>
/// <returns>是否开机自动运行</returns>
public static bool StartupEnabled()
{
using var key = Registry.CurrentUser.OpenSubKey(StartUpPath, false);
return key != null && key.GetValue(Application.ProductName) != null;
}
/// <summary>
/// 检查并更新当前程序开机自动运行路径
/// </summary>
public static void CheckAndUpdateStartupPath()
{
if (!StartupEnabled()) return;
string arg = string.Empty;
// 从注册表键值中读取启动参数
using var key = Registry.CurrentUser.OpenSubKey(StartUpPath, true);
if (key == null) return;
string oldValue = key.GetValue(Application.ProductName)?.ToString();
if (oldValue == null) return;
if (oldValue.StartsWith("\""))
{
arg = string.Join("\"", oldValue.Split('\"').Skip(2)).Trim();
}
else if (oldValue.Contains(" "))
{
arg = string.Join(" ", oldValue.Split(' ').Skip(1));
}
if (string.IsNullOrEmpty(arg))
AddToStartup();
else
AddToStartup(arg);
}
}
}

View File

@ -1,11 +1,33 @@
namespace Sunny.UI namespace Sunny.UI
{ {
/// <summary>
/// 提供程序集引用的常量定义。
/// </summary>
internal static class AssemblyRefEx internal static class AssemblyRefEx
{ {
/// <summary>
/// 程序集版本号。
/// </summary>
internal const string Version = "4.0.0.0"; internal const string Version = "4.0.0.0";
/// <summary>
/// Microsoft 公钥。
/// </summary>
internal const string MicrosoftPublicKey = "b03f5f7f11d50a3a"; internal const string MicrosoftPublicKey = "b03f5f7f11d50a3a";
/// <summary>
/// System.Design 程序集引用。
/// </summary>
internal const string SystemDesign = "System.Design, Version=" + Version + ", Culture=neutral, PublicKeyToken=" + MicrosoftPublicKey; internal const string SystemDesign = "System.Design, Version=" + Version + ", Culture=neutral, PublicKeyToken=" + MicrosoftPublicKey;
/// <summary>
/// System.Drawing.Design 程序集引用。
/// </summary>
internal const string SystemDrawingDesign = "System.Drawing.Design, Version=" + Version + ", Culture=neutral, PublicKeyToken=" + MicrosoftPublicKey; internal const string SystemDrawingDesign = "System.Drawing.Design, Version=" + Version + ", Culture=neutral, PublicKeyToken=" + MicrosoftPublicKey;
/// <summary>
/// System.Drawing 程序集引用。
/// </summary>
internal const string SystemDrawing = "System.Drawing, Version=" + Version + ", Culture=neutral, PublicKeyToken=" + MicrosoftPublicKey; internal const string SystemDrawing = "System.Drawing, Version=" + Version + ", Culture=neutral, PublicKeyToken=" + MicrosoftPublicKey;
} }
} }

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -57,10 +57,14 @@ namespace Sunny.UI
BackgroundLoop BackgroundLoop
} }
private static SoundPlayer _SoundPlayer; private static SoundPlayer _soundPlayer;
#region Methods #region Methods
/// <summary>
/// 停止播放声音。
/// </summary>
/// <param name="sound">SoundPlayer 对象。</param>
private static void InternalStop(SoundPlayer sound) private static void InternalStop(SoundPlayer sound)
{ {
new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Assert(); new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Assert();
@ -74,60 +78,66 @@ namespace Sunny.UI
} }
} }
/// <summary>播放。wav声音文件。</summary> /// <summary>
/// <param name="location">String包含声音文件的名称 </param> /// 播放 .wav 声音文件。
/// <PermissionSet><IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /><IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /><IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="UnmanagedCode, ControlThread" /><IPermission class="System.Net.WebPermission, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /></PermissionSet> /// </summary>
/// <param name="location">包含声音文件的名称的字符串。</param>
public static void Play(string location) public static void Play(string location)
{ {
Play(location, AudioPlayMode.Background); Play(location, AudioPlayMode.Background);
} }
/// <summary> /// <summary>
/// 播放。wav声音文件. /// 播放 .wav 声音文件。
/// </summary> /// </summary>
/// <param name="location">AudioPlayMode枚举模式播放声音。默认情况下AudioPlayMode.Background。</param> /// <param name="location">包含声音文件的名称的字符串。</param>
/// <param name="playMode">String包含声音文件的名称</param> /// <param name="playMode">AudioPlayMode 枚举,指示播放模式。</param>
public static void Play(string location, AudioPlayMode playMode) public static void Play(string location, AudioPlayMode playMode)
{ {
ValidateAudioPlayModeEnum(playMode, "playMode"); ValidateAudioPlayModeEnum(playMode, nameof(playMode));
string text1 = ValidateFilename(location); var validatedLocation = ValidateFilename(location);
SoundPlayer player1 = new SoundPlayer(text1); SoundPlayer player = new SoundPlayer(validatedLocation);
Play(player1, playMode); Play(player, playMode);
} }
/// <summary>
/// 根据播放模式播放声音。
/// </summary>
/// <param name="sound">SoundPlayer 对象。</param>
/// <param name="mode">AudioPlayMode 枚举,指示播放模式。</param>
private static void Play(SoundPlayer sound, AudioPlayMode mode) private static void Play(SoundPlayer sound, AudioPlayMode mode)
{ {
if (_SoundPlayer != null) if (_soundPlayer != null)
{ {
InternalStop(_SoundPlayer); InternalStop(_soundPlayer);
} }
_SoundPlayer = sound; _soundPlayer = sound;
switch (mode) switch (mode)
{ {
case AudioPlayMode.WaitToComplete: case AudioPlayMode.WaitToComplete:
_SoundPlayer.PlaySync(); _soundPlayer.PlaySync();
return; break;
case AudioPlayMode.Background: case AudioPlayMode.Background:
_SoundPlayer.Play(); _soundPlayer.Play();
return; break;
case AudioPlayMode.BackgroundLoop: case AudioPlayMode.BackgroundLoop:
_SoundPlayer.PlayLooping(); _soundPlayer.PlayLooping();
return; break;
} }
} }
/// <summary> /// <summary>
/// 播放系统声音。 /// 播放系统声音。
/// </summary> /// </summary>
/// <param name="systemSound">对象代表系统播放声音。</param> /// <param name="systemSound">SystemSound 对象代表系统播放声音。</param>
public static void PlaySystemSound(SystemSound systemSound) public static void PlaySystemSound(SystemSound systemSound)
{ {
if (systemSound == null) if (systemSound == null)
{ {
throw new ArgumentNullException(); throw new ArgumentNullException(nameof(systemSound));
} }
systemSound.Play(); systemSound.Play();
@ -136,26 +146,35 @@ namespace Sunny.UI
/// <summary> /// <summary>
/// 停止在后台播放声音。 /// 停止在后台播放声音。
/// </summary> /// </summary>
/// <filterpriority>1</filterpriority>
public static void Stop() public static void Stop()
{ {
SoundPlayer player1 = new SoundPlayer(); SoundPlayer player = new SoundPlayer();
InternalStop(player1); InternalStop(player);
} }
/// <summary>
/// 验证 AudioPlayMode 枚举值。
/// </summary>
/// <param name="value">AudioPlayMode 枚举值。</param>
/// <param name="paramName">参数名称。</param>
private static void ValidateAudioPlayModeEnum(AudioPlayMode value, string paramName) private static void ValidateAudioPlayModeEnum(AudioPlayMode value, string paramName)
{ {
if ((value < AudioPlayMode.WaitToComplete) || (value > AudioPlayMode.BackgroundLoop)) if (!Enum.IsDefined(typeof(AudioPlayMode), value))
{ {
throw new InvalidEnumArgumentException(paramName, (int)value, typeof(AudioPlayMode)); throw new InvalidEnumArgumentException(paramName, (int)value, typeof(AudioPlayMode));
} }
} }
/// <summary>
/// 验证文件名。
/// </summary>
/// <param name="location">文件名字符串。</param>
/// <returns>验证后的文件名。</returns>
private static string ValidateFilename(string location) private static string ValidateFilename(string location)
{ {
if (string.IsNullOrEmpty(location)) if (string.IsNullOrEmpty(location))
{ {
throw new ArgumentNullException(); throw new ArgumentNullException(nameof(location));
} }
return location; return location;
@ -170,18 +189,18 @@ namespace Sunny.UI
public static class Mp3Player public static class Mp3Player
{ {
/// <summary> /// <summary>
/// 播放 /// 播放 MP3 文件。
/// </summary> /// </summary>
/// <param name="MP3_FileName">文件名</param> /// <param name="mp3FileName">文件名。</param>
/// <param name="Repeat">重复</param> /// <param name="repeat">是否重复播放。</param>
public static void Play(string MP3_FileName, bool Repeat) public static void Play(string mp3FileName, bool repeat)
{ {
Win32.WinMM.mciSendString("open \"" + MP3_FileName + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero); Win32.WinMM.mciSendString($"open \"{mp3FileName}\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
Win32.WinMM.mciSendString("play MediaFile" + (Repeat ? " repeat" : string.Empty), null, 0, IntPtr.Zero); Win32.WinMM.mciSendString($"play MediaFile{(repeat ? " repeat" : string.Empty)}", null, 0, IntPtr.Zero);
} }
/// <summary> /// <summary>
/// 暂停 /// 暂停播放。
/// </summary> /// </summary>
public static void Pause() public static void Pause()
{ {
@ -189,7 +208,7 @@ namespace Sunny.UI
} }
/// <summary> /// <summary>
/// 停止 /// 停止播放。
/// </summary> /// </summary>
public static void Stop() public static void Stop()
{ {

View File

@ -0,0 +1,743 @@
/******************************************************************************
* SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
*
* Blog: https://www.cnblogs.com/yhuse
* Gitee: https://gitee.com/yhuse/SunnyUI
* GitHub: https://github.com/yhuse/SunnyUI
*
* SunnyUI.Common.dll can be used for free under the MIT license.
* If you use this code, please keep this note.
* 使
******************************************************************************
* : UBaseConfig.cs
* :
* : V3.1
* : 2020-01-01
*
* 2020-01-01: V2.2.0
******************************************************************************/
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Xml.Serialization;
namespace Sunny.UI
{
/// <summary>
/// 配置文件基类
/// </summary>
/// <typeparam name="TConfig">类型</typeparam>
public abstract class BaseConfig<TConfig> where TConfig : BaseConfig<TConfig>, new()
{
/// <summary>
/// 实体对象
/// </summary>
protected static TConfig current;
/// <summary>
/// 配置文件描述
/// </summary>
public static string Description
{
get
{
var fileanddesc = ConfigHelper.GetConfigFile<TConfig>();
return fileanddesc.Item2;
}
}
/// <summary>
/// 配置文件名
/// </summary>
public static string ConfigFile
{
get
{
var fileanddesc = ConfigHelper.GetConfigFile<TConfig>();
return fileanddesc.Item1;
}
}
/// <summary>
/// 当前可执行文件路径,末尾包括\
/// </summary>
/// <returns>结果</returns>
private static string CurrentDir()
{
return Environment.CurrentDirectory.DealPath();
}
/// <summary>
/// 当前实例。通过置空可以使其重新加载。
/// </summary>
public static TConfig Current
{
get
{
if (current != null)
{
return current;
}
// 现在没有对象尝试加载若返回null则实例化一个新的
current = CreateNew();
if (!current.Load(CurrentDir() + ConfigFile))
{
try
{
// 根据配置,有可能不保存,直接返回默认
current.Save();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
return current;
}
set => current = value;
}
private static TConfig CreateNew()
{
TConfig config = new TConfig();
config.SetDefault();
return config;
}
/// <summary>保存到配置文件中去</summary>
public void Save()
{
Save(null);
}
/// <summary>
/// 加载指定配置文件
/// </summary>
/// <returns>结果</returns>
public bool Load()
{
return Load(null);
}
/// <summary>
/// 加密
/// </summary>
/// <param name="str">字符串</param>
/// <returns>加密后字符串</returns>
public string Encrypt(string str)
{
Random random = new Random();
var value = random.Next(100000, 999999);
string tmp = str + value.ToString();
return tmp.DesEncrypt();
}
/// <summary>
/// 解密
/// </summary>
/// <param name="str">字符串</param>
/// <returns>解密后字符串</returns>
public string Decrypt(string str)
{
string result = str.DesDecrypt();
return result.Left(result.Length - 6);
}
/// <summary>加载指定配置文件</summary>
/// <param name="filename">文件名</param>
/// <returns>结果</returns>
public abstract bool Load(string filename);
/// <summary>保存到配置文件中去</summary>
/// <param name="filename">文件名</param>
public abstract void Save(string filename);
/// <summary>
/// 设置默认值
/// </summary>
public virtual void SetDefault()
{
}
}
/// <summary>
/// 忽略此属性的配置存储
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class MapperIgnoreAttribute : Attribute
{
}
/// <summary>
/// 忽略此属性的配置存储
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class IgnoreAttribute : Attribute
{
}
/// <summary>
/// 配置文件帮助类
/// </summary>
public static class ConfigHelper
{
/// <summary>
/// 类型是否能够转为指定基类
/// </summary>
/// <param name="type">类型</param>
/// <param name="baseType">基类</param>
/// <returns>是否能够转为指定基类</returns>
public static bool As(this Type type, Type baseType)
{
if (type == null)
{
return false;
}
// 如果基类是泛型定义
if (baseType.IsGenericTypeDefinition && type.IsGenericType && !type.IsGenericTypeDefinition)
{
type = type.GetGenericTypeDefinition();
}
if (type == baseType)
{
return true;
}
if (baseType.IsAssignableFrom(type))
{
return true;
}
var rs = false;
// 接口
if (baseType.IsInterface)
{
if (type.GetInterface(baseType.FullName) != null)
{
rs = true;
}
else
foreach (var e in type.GetInterfaces())
{
if (e.IsGenericType && baseType.IsGenericTypeDefinition ? e.GetGenericTypeDefinition() == baseType : e == baseType)
{
rs = true;
break;
}
}
}
// 判断是否子类时,支持只反射加载的程序集
if (!rs && type.Assembly.ReflectionOnly)
{
// 反射加载时,需要特殊处理接口
while (!rs && type != typeof(object))
{
if (type == null)
{
continue;
}
if (type.FullName == baseType.FullName && type.AssemblyQualifiedName == baseType.AssemblyQualifiedName)
{
rs = true;
}
type = type.BaseType;
}
}
return rs;
}
/// <summary>是否泛型字典</summary>
/// <param name="type">类型</param>
/// <returns>是否泛型字典</returns>
public static bool IsDictionary(this Type type) => type != null && type.IsGenericType && type.As(typeof(IDictionary<,>));
/// <summary>是否泛型列表</summary>
/// <param name="type">类型</param>
/// <returns>是否泛型列表</returns>
public static bool IsList(this Type type)
{
return type != null && type.IsGenericType && type.As(typeof(IList<>));
//return Array.IndexOf(type.GetInterfaces(), typeof(IEnumerable)) > -1;
}
/// <summary>获取成员绑定的显示名优先DisplayName然后Description</summary>
/// <param name="member">member</param>
/// <returns>显示名</returns>
public static string DisplayName(this PropertyInfo member)
{
var att = member.GetCustomAttribute<DisplayNameAttribute>();
if (att != null && !att.DisplayName.IsNullOrWhiteSpace())
{
return att.DisplayName;
}
return "";
}
/// <summary>获取成员绑定的显示名优先DisplayName然后Description</summary>
/// <param name="member">member</param>
/// <returns>显示名</returns>
public static string Description(this PropertyInfo member)
{
var att2 = member.GetCustomAttribute<DescriptionAttribute>();
if (att2 != null && !att2.Description.IsNullOrWhiteSpace())
{
return att2.Description;
}
return "";
}
/// <summary>
/// 获取需要的属性,删除忽略的属性
/// </summary>
/// <param name="type">类型</param>
/// <returns>属性列表</returns>
public static List<PropertyInfo> GetNeedProperties(this Type type)
{
var list = type.GetProperties();
List<PropertyInfo> result = new List<PropertyInfo>();
foreach (var info in list)
{
if (info.GetCustomAttribute<XmlIgnoreAttribute>() != null)
{
continue;
}
if (info.GetCustomAttribute<ConfigIgnoreAttribute>() != null)
{
continue;
}
if (info.GetCustomAttribute<MapperIgnoreAttribute>() != null)
{
continue;
}
if (info.GetCustomAttribute<IgnoreAttribute>() != null)
{
continue;
}
result.Add(info);
}
return result;
}
/// <summary>
/// 获取配置文件路径
/// </summary>
/// <typeparam name="TConfig">类型</typeparam>
/// <returns>文件名</returns>
public static Tuple<string, string> GetConfigFile<TConfig>()
{
string filename;
string description = "配置文件";
var att = typeof(TConfig).GetCustomAttribute<ConfigFileAttribute>();
if (att == null || att.FileName.IsNullOrWhiteSpace())
{
filename = $"{typeof(TConfig).Name}.cfg";
}
else
{
filename = att.FileName;
if (!att.Description.IsNullOrEmpty())
{
description = att.Description;
}
}
return new Tuple<string, string>(filename, description);
}
/// <summary>
/// 初始化属性
/// </summary>
/// <param name="config">配置类</param>
/// <typeparam name="TConfig">类型</typeparam>
/// <returns>节点</returns>
/// <exception cref="ApplicationException">ApplicationException</exception>
public static ConcurrentDictionary<string, Ident> InitIdents<TConfig>(TConfig config)
{
ConcurrentDictionary<string, Ident> idents = new ConcurrentDictionary<string, Ident>();
var list = config.GetType().GetNeedProperties();
foreach (PropertyInfo info in list)
{
Ident ident = new Ident
{
Key = info.Name,
Show = true,
Description = info.Description(),
IsList = info.PropertyType.IsList()
};
var section = info.GetCustomAttribute<ConfigSectionAttribute>();
ident.Section = section != null ? section.Section : "";
var propertyatt = info.GetCustomAttribute<ConfigPropertyAttribute>();
ident.Caption = propertyatt != null ? propertyatt.Caption : "";
ident.Unit = propertyatt != null ? propertyatt.Unit : "";
ident.Description = propertyatt != null ? propertyatt.Description : "";
var indexatt = info.GetCustomAttribute<ConfigIndexAttribute>();
ident.Index = indexatt?.Index ?? short.MaxValue + idents.Count;
ident.Show = indexatt == null || indexatt.Show;
if (ident.Description.IsNullOrEmpty())
{
ident.Description = info.DisplayName() ?? info.Description();
}
if (ident.Description.IsNullOrEmpty())
{
ident.Description = "";
}
if (!idents.ContainsKey(ident.Key))
{
idents.TryAdd(ident.Key, ident);
}
}
return idents;
}
/// <summary>
/// 类型默认值
/// </summary>
/// <param name="targetType">类型</param>
/// <returns>默认值</returns>
public static object DefaultValue(Type targetType)
{
return targetType.IsValueType ? Activator.CreateInstance(targetType) : null;
}
/// <summary>
/// 读取对象数值
/// </summary>
/// <param name="config">配置文件</param>
/// <param name="idents">节点</param>
/// <typeparam name="TConfig">类型</typeparam>
/// <exception cref="ApplicationException">ApplicationException</exception>
public static void LoadConfigValue<TConfig>(TConfig config, ConcurrentDictionary<string, Ident> idents)
{
var list = config.GetType().GetNeedProperties();
foreach (PropertyInfo info in list)
{
object defaultobj = info.GetValue(config, null);
Type type = info.PropertyType;
if (type == typeof(string))
{
object value = idents[info.Name].Value;
info.SetValue(config, Convert.ChangeType(value == null ? defaultobj : value, type), null);
continue;
}
if (ConvertEx.CanConvent(type))
{
object value = ConvertEx.StringToObject(idents[info.Name].Value, type, defaultobj);
info.SetValue(config, Convert.ChangeType(value, type), null);
continue;
}
if (type.IsList())
{
Type[] genericTypes = type.GetGenericArguments();
if (genericTypes.Length != 1)
{
throw new ApplicationException("转换出错: " + type.FullName);
}
Type childtype = genericTypes[0];
Type typeDataList = typeof(List<>).MakeGenericType(childtype);
MethodInfo methodInfo = typeDataList.GetMethod("Add", BindingFlags.Public | BindingFlags.Instance);
if (methodInfo == null)
{
continue;
}
object listvalue = typeDataList.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, new object[] { });
foreach (string strvalue in idents[info.Name].Values)
{
if (childtype == typeof(string))
{
object value = strvalue;
methodInfo.Invoke(listvalue, new[] { value });
}
else if (ConvertEx.CanConvent(childtype))
{
object value = ConvertEx.StringToObject(strvalue, childtype, DefaultValue(childtype));
methodInfo.Invoke(listvalue, new[] { value });
}
}
info.SetValue(config, listvalue, null);
continue;
}
throw new ApplicationException("不支持此类型: " + type.FullName);
}
}
/// <summary>
/// 设置对象数值
/// </summary>
/// <param name="config">配置文件</param>
/// <param name="idents">节点</param>
/// <typeparam name="TConfig">类型</typeparam>
/// <exception cref="ApplicationException">ApplicationException</exception>
public static void SaveConfigValue<TConfig>(TConfig config, ConcurrentDictionary<string, Ident> idents)
{
var list = config.GetType().GetNeedProperties();
foreach (PropertyInfo info in list)
{
object obj = info.GetValue(config, null);
Type type = info.PropertyType;
if (ConvertEx.CanConvent(type))
{
string value = ConvertEx.ObjectToString(obj, type);
idents[info.Name].Value = value;
continue;
}
if (type.IsList())
{
Type[] genericTypes = type.GetGenericArguments();
if (genericTypes.Length != 1)
{
throw new ApplicationException("转换出错: " + type.FullName);
}
Type childtype = genericTypes[0];
IEnumerable en = obj as IEnumerable;
if (en == null)
{
throw new ApplicationException("转换出错: " + type.FullName);
}
idents[info.Name].Values.Clear();
foreach (object child in en)
{
if (ConvertEx.CanConvent(childtype))
{
idents[info.Name].Values.Add(ConvertEx.ObjectToString(child, childtype));
}
else
{
throw new ApplicationException("不支持此类型: " + type.FullName);
}
}
continue;
}
throw new ApplicationException("不支持此类型: " + type.FullName);
}
}
}
/// <summary>配置文件特性</summary>
[AttributeUsage(AttributeTargets.Class)]
public class ConfigFileAttribute : Attribute
{
/// <summary>
/// 配置文件名
/// </summary>
public string FileName { get; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; }
/// <summary>
/// 配置文件
/// </summary>
public ConfigFileAttribute() : this(string.Empty, string.Empty)
{
}
/// <summary>配置文件</summary>
/// <param name="fileName">文件名</param>
/// <param name="description">描述</param>
public ConfigFileAttribute(string fileName, string description = "")
{
FileName = fileName;
Description = description;
}
}
/// <summary>
/// 数据节点
/// </summary>
public class Ident
{
/// <summary>
/// 节
/// </summary>
public string Section { get; set; }
/// <summary>
/// 键
/// </summary>
public string Key { get; set; }
/// <summary>
/// 值
/// </summary>
public string Value { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Caption { get; set; }
/// <summary>
/// 单位
/// </summary>
public string Unit { get; set; }
/// <summary>
/// 序号
/// </summary>
public int Index { get; set; }
/// <summary>
/// 是否显示
/// </summary>
public bool Show { get; set; }
/// <summary>
/// ToString()
/// </summary>
/// <returns>String</returns>
public override string ToString()
{
return Index + " [" + Section + "] " + Key + " = ?";
}
/// <summary>
/// 是否是列表类型
/// </summary>
public bool IsList { get; set; }
/// <summary>
/// 列表值
/// </summary>
public List<string> Values = new List<string>();
}
/// <summary>
/// 配置属性节点特性
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class ConfigSectionAttribute : Attribute
{
/// <summary>
/// 节
/// </summary>
public string Section { get; }
/// <summary>属性节点特性</summary>
/// <param name="section">节</param>
public ConfigSectionAttribute(string section)
{
Section = section;
}
}
/// <summary>
/// 配置属性描述特性
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class ConfigPropertyAttribute : Attribute
{
/// <summary>
/// 标题
/// </summary>
public string Caption { get; }
/// <summary>
/// 单位
/// </summary>
public string Unit { get; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; }
/// <summary>
/// 配置文件属性
/// </summary>
/// <param name="caption">标题</param>
/// <param name="unit">单位</param>
/// <param name="description">描述</param>
public ConfigPropertyAttribute(string caption, string description = "", string unit = "")
{
Caption = caption;
Unit = unit;
Description = description;
}
}
/// <summary>
/// 忽略此属性的配置存储
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class ConfigIgnoreAttribute : Attribute
{
}
/// <summary>
/// 配置序号描述特性
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class ConfigIndexAttribute : Attribute
{
/// <summary>
/// 序号
/// </summary>
public int Index { get; }
/// <summary>
/// 是否显示
/// </summary>
public bool Show { get; }
/// <summary>配置序号特性</summary>
/// <param name="index">序号</param>
/// <param name="show">是否显示</param>
public ConfigIndexAttribute(int index, bool show = true)
{
Index = index;
Show = show;
}
}
}

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -153,20 +153,16 @@ namespace Sunny.UI
/// </summary> /// </summary>
public class BmpFile public class BmpFile
{ {
BmpHead head;
byte[] data;
/// <summary> /// <summary>
/// 慢于 bitmap.Save(XX,ImageFormat.Bmp)只是为了解释BMP文件数据格式 /// 慢于 bitmap.Save(XX,ImageFormat.Bmp)只是为了解释BMP文件数据格式
/// </summary> /// </summary>
/// <param name="bitmap"></param> /// <param name="bitmap"></param>
public BmpFile(Bitmap bitmap) public BmpFile(Bitmap bitmap)
{ {
head = new BmpHead(); var head = new BmpHead();
head.Init(bitmap); head.Init(bitmap);
data = new byte[head.FileSize]; Data = new byte[head.FileSize];
Array.Copy(head.ToBytes(), 0, data, 0, (int)head.BitmapDataOffset); Array.Copy(head.ToBytes(), 0, Data, 0, (int)head.BitmapDataOffset);
var sourceArea = new Rectangle(0, 0, bitmap.Width, bitmap.Height); var sourceArea = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
var bitmapData = bitmap.LockBits(sourceArea, ImageLockMode.ReadOnly, PixelFormat.Format32bppPArgb); var bitmapData = bitmap.LockBits(sourceArea, ImageLockMode.ReadOnly, PixelFormat.Format32bppPArgb);
@ -200,10 +196,10 @@ namespace Sunny.UI
/// <param name="bmpData">数据从左上角开始为每个点的B、G、R循环</param> /// <param name="bmpData">数据从左上角开始为每个点的B、G、R循环</param>
public BmpFile(int width, int height, byte[] bmpData) public BmpFile(int width, int height, byte[] bmpData)
{ {
head = new BmpHead(); var head = new BmpHead();
head.Init(width, height); head.Init(width, height);
data = new byte[head.FileSize]; Data = new byte[head.FileSize];
Array.Copy(head.ToBytes(), 0, data, 0, (int)head.BitmapDataOffset); Array.Copy(head.ToBytes(), 0, Data, 0, (int)head.BitmapDataOffset);
if (bmpData.Length != width * height * 3) return; if (bmpData.Length != width * height * 3) return;
//BMP文件的数据从左下角开始每行向上。System.Drawing.Bitmap数据是从左上角开始每行向下 //BMP文件的数据从左下角开始每行向上。System.Drawing.Bitmap数据是从左上角开始每行向下
@ -212,7 +208,7 @@ namespace Sunny.UI
{ {
int offset = height - 1 - i; int offset = height - 1 - i;
offset *= width * 3; offset *= width * 3;
Array.Copy(bmpData, offset, data, idx, width * 3); Array.Copy(bmpData, offset, Data, idx, width * 3);
idx += width * 3; idx += width * 3;
} }
} }
@ -220,7 +216,7 @@ namespace Sunny.UI
/// <summary> /// <summary>
/// 二进制数据 /// 二进制数据
/// </summary> /// </summary>
public byte[] Data => data; public byte[] Data { get; }
/// <summary> /// <summary>
/// 保存文件 /// 保存文件
@ -228,7 +224,7 @@ namespace Sunny.UI
/// <param name="fileName">文件名</param> /// <param name="fileName">文件名</param>
public void SaveToFile(string fileName) public void SaveToFile(string fileName)
{ {
File.WriteAllBytes(fileName, data); File.WriteAllBytes(fileName, Data);
} }
/// <summary> /// <summary>
@ -237,7 +233,7 @@ namespace Sunny.UI
/// <returns>图片</returns> /// <returns>图片</returns>
public Bitmap Bitmap() public Bitmap Bitmap()
{ {
MemoryStream ms = new MemoryStream(data); var ms = new MemoryStream(Data);
ms.Position = 0; ms.Position = 0;
return new Bitmap(ms); return new Bitmap(ms);
} }

View File

@ -1,146 +0,0 @@
/******************************************************************************
* SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
*
* Blog: https://www.cnblogs.com/yhuse
* Gitee: https://gitee.com/yhuse/SunnyUI
* GitHub: https://github.com/yhuse/SunnyUI
*
* SunnyUI.dll can be used for free under the GPL-3.0 license.
* If you use this code, please keep this note.
* 使
******************************************************************************
* : UCompress.cs
* :
* : V3.4
* : 2023-07-17
*
* 2023-07-17: V3.4.0
******************************************************************************/
using System;
using System.Runtime.InteropServices;
namespace Sunny.UI
{
public enum DataFrameCompressType
{
[DisplayText("None")]
None = 0,
[DisplayText("FastLZ")]
FastLZ = 1,
[DisplayText("ZLib")]
ZLib = 2,
[DisplayText("GZip")]
GZip = 3,
[DisplayText("Deflate")]
Deflate = 4
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct DataFrame
{
public DateTime DateTime;
public byte[] Data;
public int Index;
public int CRC;
public DataFrame(DateTime dateTime, byte[] data, int index, int crc)
{
DateTime = dateTime;
Data = data;
Index = index;
CRC = crc;
}
public static DataFrame Empty()
{
#if NET40
return new DataFrame(DateTime.MinValue, new byte[0], -1, 0);
#else
return new DataFrame(DateTime.MinValue, Array.Empty<byte>(), -1, 0);
#endif
}
}
public static class DataFrameCompressHelper
{
public static byte[] Compress(DataFrame frame, DataFrameCompressType compressType, out int compressedLength, out int decompressLength)
{
byte[] compressed;
decompressLength = frame.Data.Length;
switch (compressType)
{
case DataFrameCompressType.None:
compressed = frame.Data;
break;
case DataFrameCompressType.FastLZ:
if (FastLZ.CheckFastLZDll())
{
compressed = FastLZ.Compress(frame.Data, 0, frame.Data.Length);
decompressLength = Math.Max(frame.Data.Length * 2, 66);
}
else
{
throw new NullReferenceException("FastLZx86.dll and FastLZx64.dll not exists.");
}
break;
case DataFrameCompressType.ZLib:
compressed = frame.Data.ZLibCompress();
break;
case DataFrameCompressType.GZip:
compressed = frame.Data.GZipCompress();
break;
case DataFrameCompressType.Deflate:
compressed = frame.Data.DeflateCompress();
break;
default:
compressed = frame.Data;
break;
}
compressedLength = compressed.Length;
return compressed;
}
public static byte[] Decompress(byte[] package, DataFrameCompressType compressType, int decompressLength)
{
byte[] data;
switch (compressType)
{
case DataFrameCompressType.None:
data = package;
break;
case DataFrameCompressType.FastLZ:
if (FastLZ.CheckFastLZDll())
{
data = FastLZ.Decompress(package, 0, package.Length, decompressLength);
}
else
{
throw new NullReferenceException("FastLZx86.dll and FastLZx64.dll not exists.");
}
break;
case DataFrameCompressType.ZLib:
data = package.ZLibDecompress();
break;
case DataFrameCompressType.GZip:
data = package.GZipDecompress();
break;
case DataFrameCompressType.Deflate:
data = package.DeflateDecompress();
break;
default:
data = package;
break;
}
return data;
}
}
}

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -18,6 +18,7 @@
* *
* 2020-01-01: V2.2.0 * 2020-01-01: V2.2.0
* 2023-04-02: V3.3.4 null的Bug * 2023-04-02: V3.3.4 null的Bug
* 2024-11-06: V3.7.2 UITreeView增加了一个刷新节点状态的扩展函数
******************************************************************************/ ******************************************************************************/
using System; using System;
@ -90,22 +91,6 @@ namespace Sunny.UI
return ctrl.PointToScreen(new Point(0, 0)); return ctrl.PointToScreen(new Point(0, 0));
} }
/// <summary>
/// 控件的根窗体
/// </summary>
/// <param name="ctrl">控件</param>
/// <returns>根窗体</returns>
public static Form RootForm(this Control ctrl)
{
if (ctrl == null) return null;
while (ctrl.Parent != null)
{
ctrl = ctrl.Parent;
}
return ctrl as Form;
}
/// <summary> /// <summary>
/// 设置控件位于容器的中心 /// 设置控件位于容器的中心
/// </summary> /// </summary>
@ -266,21 +251,20 @@ namespace Sunny.UI
public static void ResetBorderColor(Message m, Control control, int width, Color color) public static void ResetBorderColor(Message m, Control control, int width, Color color)
{ {
//根据颜色和边框像素取得一条线 //根据颜色和边框像素取得一条线
using (Pen pen = new Pen(color, width)) using Pen pen = new Pen(color, width);
//得到当前的句柄
IntPtr hDC = (IntPtr)Win32.User.GetWindowDC(m.HWnd);
if (hDC.ToInt32() == 0)
{ {
//得到当前的句柄 return;
IntPtr hDC = (IntPtr)Win32.User.GetWindowDC(m.HWnd);
if (hDC.ToInt32() == 0)
{
return;
}
//绘制边框
Graphics g = Graphics.FromHdc(hDC);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.DrawRectangle(pen, 0, 0, control.Width - width, control.Height - width);
//释放
Win32.User.ReleaseDC(m.HWnd, hDC);
} }
//绘制边框
Graphics g = Graphics.FromHdc(hDC);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.DrawRectangle(pen, 0, 0, control.Width - width, control.Height - width);
//释放
Win32.User.ReleaseDC(m.HWnd, hDC);
} }
/// <summary> /// <summary>
@ -389,14 +373,11 @@ namespace Sunny.UI
internal static void HideComboDropDown(this Control ctrl) internal static void HideComboDropDown(this Control ctrl)
{ {
var ctrls = ctrl?.FindForm()?.GetInterfaceControls("IHideDropDown", true); var ctrls = ctrl?.FindForm()?.GetInterfaceControls<IHideDropDown>(true);
if (ctrls == null) return; if (ctrls == null) return;
foreach (var control in ctrls) foreach (var control in ctrls)
{ {
if (control is IHideDropDown item) control.HideDropDown();
{
item.HideDropDown();
}
} }
} }
@ -407,21 +388,43 @@ namespace Sunny.UI
/// <param name="interfaceName">接口名称</param> /// <param name="interfaceName">接口名称</param>
/// <param name="includeChild"></param> /// <param name="includeChild"></param>
/// <returns>控件列表</returns> /// <returns>控件列表</returns>
public static List<Control> GetInterfaceControls(this Control ctrl, string interfaceName, bool includeChild = false) public static List<T> GetInterfaceControls<T>(this Control ctrl, bool includeChild = false)
{ {
List<Control> values = new List<Control>(); List<T> values = new();
if (ctrl.IsNull()) return values; if (ctrl.IsNull()) return values;
foreach (Control obj in ctrl.Controls) foreach (Control obj in ctrl.Controls)
{ {
if (obj.GetType().GetInterface(interfaceName) != null) if (obj is T it && it != null)
{ {
values.Add(obj); values.Add(it);
} }
if (includeChild && obj.Controls.Count > 0) if (includeChild && obj.Controls.Count > 0)
{ {
values.AddRange(obj.GetInterfaceControls(interfaceName, true)); values.AddRange(obj.GetInterfaceControls<T>(includeChild));
}
}
return values;
}
internal static List<T> GetTranslateControls<T>(this Control ctrl)
{
List<T> values = new();
if (ctrl.IsNull()) return values;
foreach (Control obj in ctrl.Controls)
{
if (obj is T it && it != null)
{
values.Add(it);
}
if (obj.Controls.Count > 0)
{
if (obj is UIPage) continue;
values.AddRange(obj.GetTranslateControls<T>());
} }
} }
@ -441,8 +444,9 @@ namespace Sunny.UI
Win32.GDI.SelectObject(compatibleDc, bitmap); Win32.GDI.SelectObject(compatibleDc, bitmap);
Win32.GDI.PrintWindow(ctrl.Handle, compatibleDc, 0); Win32.GDI.PrintWindow(ctrl.Handle, compatibleDc, 0);
Bitmap bmp = Image.FromHbitmap(bitmap); Bitmap bmp = Image.FromHbitmap(bitmap);
Win32.GDI.DeleteDC(hdc); //删除用过的对象
Win32.GDI.DeleteDC(compatibleDc); //删除用过的对象 Win32.GDI.DeleteDC(compatibleDc); //删除用过的对象
Win32.GDI.DeleteDC(bitmap); //删除用过的对象
Win32.GDI.DeleteDC(hdc); //删除用过的对象
return bmp; return bmp;
} }
@ -527,32 +531,38 @@ namespace Sunny.UI
/// <returns>全选状态(Checked),半选状态(Indeterminate),未选状态(Unchecked)</returns> /// <returns>全选状态(Checked),半选状态(Indeterminate),未选状态(Unchecked)</returns>
public static CheckState CheckState(this TreeNode node) public static CheckState CheckState(this TreeNode node)
{ {
if (GetChildNodeCheckedState(node)) if (node.Nodes.Count > 0)
{ {
return System.Windows.Forms.CheckState.Indeterminate; var count = node.Nodes.Cast<TreeNode>().Where(n => n.Checked).ToList().Count;
if (count == 0)
{
return System.Windows.Forms.CheckState.Unchecked;
}
else if (count == node.Nodes.Count)
{
return System.Windows.Forms.CheckState.Checked;
}
else
{
return System.Windows.Forms.CheckState.Indeterminate;
}
} }
return node.Checked ? System.Windows.Forms.CheckState.Checked : System.Windows.Forms.CheckState.Unchecked; return node.Checked ? System.Windows.Forms.CheckState.Checked : System.Windows.Forms.CheckState.Unchecked;
} }
private static bool GetChildNodeCheckedState(TreeNode node) public static void RefreshCheckState(this TreeNode node)
{ {
if (node.TreeView is not UITreeView.TreeViewEx tv) return;
System.Windows.Forms.CheckState state = node.CheckState();
if (node.Nodes.Count > 0) if (node.Nodes.Count > 0)
{ {
var count = node.Nodes.Cast<TreeNode>().Where(n => n.Checked).ToList().Count; if (state == System.Windows.Forms.CheckState.Checked && !node.Checked) node.Checked = true;
if (count > 0 && count < node.Nodes.Count) if (state == System.Windows.Forms.CheckState.Unchecked && node.Checked) node.Checked = false;
{
return true;
}
else
{
foreach (TreeNode nd in node.Nodes)
{
return GetChildNodeCheckedState(nd);
}
}
} }
return false;
tv.DicNodeStatus[node.GetHashCode()] = state == System.Windows.Forms.CheckState.Indeterminate;
tv.Invalidate();
} }
public static void Disabled(this Control ctrl) public static void Disabled(this Control ctrl)

View File

@ -0,0 +1,371 @@
/******************************************************************************
* SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
*
* Blog: https://www.cnblogs.com/yhuse
* Gitee: https://gitee.com/yhuse/SunnyUI
* GitHub: https://github.com/yhuse/SunnyUI
*
* SunnyUI.Common.dll can be used for free under the MIT license.
* If you use this code, please keep this note.
* 使
******************************************************************************
* : UConvertEx.cs
* :
* : V3.1
* : 2020-01-01
*
* 2020-11-20: V3.0.0
******************************************************************************/
using System;
using System.Drawing;
namespace Sunny.UI
{
/// <summary>
/// 对象转换扩展类
/// </summary>
public static class ConvertEx
{
/// <summary>
/// 可以对象和字符串互相转换的类型
/// </summary>
/// <param name="type">类型</param>
/// <returns>结果</returns>
public static bool CanConvent(Type type)
{
bool result = false;
TypeCode typeCode = Type.GetTypeCode(type);
switch (typeCode)
{
case TypeCode.String:
case TypeCode.Char:
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Int64:
case TypeCode.UInt64:
case TypeCode.Single:
case TypeCode.Double:
case TypeCode.Decimal:
case TypeCode.Boolean:
case TypeCode.DateTime:
result = true;
break;
case TypeCode.Object:
if (type == typeof(Point) ||
type == typeof(PointF) ||
type == typeof(Color) ||
type == typeof(Size) ||
type == typeof(SizeF))
{
result = true;
}
break;
}
return result;
}
/// <summary>
/// 字符串转对象
/// </summary>
/// <param name="str">字符串</param>
/// <param name="type">类型</param>
/// <param name="defaultobj">默认对象</param>
/// <returns>对象</returns>
public static object StringToObject(string str, Type type, object defaultobj)
{
object obj = defaultobj;
if (type == typeof(string))
{
return str;
}
if (str.IsNullOrEmpty())
{
return defaultobj;
}
TypeCode typeCode = Type.GetTypeCode(type);
switch (typeCode)
{
case TypeCode.Char:
obj = str.ToChar((char)defaultobj);
break;
case TypeCode.SByte:
obj = str.ToSByte((sbyte)defaultobj);
break;
case TypeCode.Byte:
obj = str.ToByte((byte)defaultobj);
break;
case TypeCode.Int16:
obj = str.ToShort((short)defaultobj);
break;
case TypeCode.UInt16:
obj = str.ToUShort((ushort)defaultobj);
break;
case TypeCode.Int32:
obj = str.ToInt((int)defaultobj);
break;
case TypeCode.UInt32:
obj = str.ToUInt((uint)defaultobj);
break;
case TypeCode.Int64:
obj = str.ToLong((long)defaultobj);
break;
case TypeCode.UInt64:
obj = str.ToULong((ulong)defaultobj);
break;
case TypeCode.Single:
obj = str.ToFloat((float)defaultobj);
break;
case TypeCode.Double:
obj = str.ToDouble((double)defaultobj);
break;
case TypeCode.Decimal:
obj = str.ToDecimal((decimal)defaultobj);
break;
case TypeCode.Boolean:
if (str.ToUpper().Equals(bool.TrueString.ToUpper()))
{
obj = true;
}
if (str.ToUpper().Equals(bool.FalseString.ToUpper()))
{
obj = false;
}
break;
case TypeCode.DateTime:
try
{
DateTime dt = str.ToDateTime(DateTimeEx.DateTimeFormat);
obj = dt;
}
catch (Exception e)
{
Console.WriteLine(e);
}
break;
case TypeCode.Object:
obj = StringToObjectEx(str, type, defaultobj);
break;
default:
throw new ApplicationException("不支持此类型: " + type.FullName);
}
if (type == typeof(DateTime))
{
}
return obj;
}
/// <summary>
/// 字符串转对象扩展
/// </summary>
/// <param name="str">字符串</param>
/// <param name="type">类型</param>
/// <param name="defaultobj">默认对象</param>
/// <returns>对象</returns>
private static object StringToObjectEx(string str, Type type, object defaultobj)
{
object obj = defaultobj;
if (type == typeof(Point))
{
string[] strs = str.ToUpper().Replace("X:", "").Replace("Y:", "").Trim().Split(";");
if (strs.Length == 2)
{
if (int.TryParse(strs[0], out var x) && int.TryParse(strs[1], out var y))
{
obj = new Point(x, y);
}
}
}
else if (type == typeof(PointF))
{
string[] strs = str.ToUpper().Replace("X:", "").Replace("Y:", "").Trim().Split(";");
if (strs.Length == 2)
{
if (float.TryParse(strs[0], out var x) && float.TryParse(strs[1], out var y))
{
obj = new PointF(x, y);
}
}
}
else if (type == typeof(Color))
{
string[] strs = str.ToUpper().Replace("A:", "").Replace("R:", "").Replace("G:", "").Replace("B:", "").Trim().Split(";");
if (strs.Length == 4)
{
if (int.TryParse(strs[0], out var a) && int.TryParse(strs[1], out var r) && int.TryParse(strs[2], out var g) && int.TryParse(strs[3], out var b))
{
if (a.InRange(0, 255) && r.InRange(0, 255) && g.InRange(0, 255) && b.InRange(0, 255))
{
obj = Color.FromArgb(a, r, g, b);
}
}
}
}
else if (type == typeof(Size))
{
string[] strs = str.ToUpper().Replace("W:", "").Replace("H:", "").Trim().Split(";");
if (strs.Length == 2)
{
if (int.TryParse(strs[0], out var x) && int.TryParse(strs[1], out var y))
{
obj = new Size(x, y);
}
}
}
else if (type == typeof(SizeF))
{
string[] strs = str.ToUpper().Replace("W:", "").Replace("H:", "").Trim().Split(";");
if (strs.Length == 2)
{
if (float.TryParse(strs[0], out var x) && float.TryParse(strs[1], out var y))
{
obj = new SizeF(x, y);
}
}
}
else
{
throw new ApplicationException("不支持此类型: " + type.FullName);
}
return obj;
}
/// <summary>
/// 对象转字符串
/// </summary>
/// <param name="obj">对象</param>
/// <param name="type">类型</param>
/// <returns>字符串</returns>
public static string ObjectToString(object obj, Type type)
{
string value;
TypeCode typeCode = Type.GetTypeCode(type);
switch (typeCode)
{
case TypeCode.String:
if (obj == null)
{
obj = "";
}
value = obj.ToString();
break;
case TypeCode.Char:
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Int64:
case TypeCode.UInt64:
case TypeCode.Single:
case TypeCode.Double:
case TypeCode.Decimal:
value = obj.ToString();
break;
case TypeCode.Boolean:
value = (bool)obj ? bool.TrueString : bool.FalseString;
break;
case TypeCode.DateTime:
value = ((DateTime)obj).ToString(DateTimeEx.DateTimeFormat);
break;
case TypeCode.Object:
value = ObjectToStringEx(obj, type);
break;
default:
throw new ApplicationException("不支持此类型: " + type.FullName);
}
return value;
}
/// <summary>
/// 对象转字符串扩展
/// </summary>
/// <param name="obj">对象</param>
/// <param name="type">类型</param>
/// <returns>字符串</returns>
private static string ObjectToStringEx(object obj, Type type)
{
string value;
if (type == typeof(Point))
{
Point point = (Point)obj;
value = "X:" + point.X + "; Y:" + point.Y;
}
else if (type == typeof(PointF))
{
PointF point = (PointF)obj;
value = "X:" + point.X + "; Y:" + point.Y;
}
else if (type == typeof(Color))
{
Color color = (Color)obj;
value = "A:" + color.A + "; R:" + color.R + "; G:" + color.G + "; B:" + color.B;
}
else if (type == typeof(Size))
{
Size size = (Size)obj;
value = "W:" + size.Width + "; H:" + size.Height;
}
else if (type == typeof(SizeF))
{
SizeF size = (SizeF)obj;
value = "W:" + size.Width + "; H:" + size.Height;
}
else
{
throw new ApplicationException("不支持此类型: " + type.FullName);
}
return value;
}
}
}

View File

@ -0,0 +1,382 @@
/******************************************************************************
* SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
*
* Blog: https://www.cnblogs.com/yhuse
* Gitee: https://gitee.com/yhuse/SunnyUI
* GitHub: https://github.com/yhuse/SunnyUI
*
* SunnyUI.dll can be used for free under the GPL-3.0 license.
* If you use this code, please keep this note.
* 使
******************************************************************************
* : UDateTimeInt64.cs
* :
* : V2.2
* : 2020-09-23
*
* 2020-09-23: V2.2.8
* 2020-10-10: V2.2.8 Double互转
******************************************************************************/
using System;
namespace Sunny.UI
{
/// <summary>
/// 日期与长整形和浮点型互转
/// Value长整形为1970年1月1日0时起的毫秒数
/// DoubleValue双精度浮点数1970年1月1日0时起的天数
/// </summary>
public struct DateTimeInt64 : IComparable, IEquatable<DateTimeInt64>, IEquatable<long>, IEquatable<DateTime>
{
public long Value { get; set; }
public const long Jan1st1970Ticks = 621355968000000000; //Jan1st1970.Ticks;
public const long Dec31th9999Ticks = 3155378975999990000; //DateTime.MaxValue.Ticks;
public const string DefaultFormatString = DateTimeEx.DateTimeFormatEx;
public const double MillisecondsPerDay = 86400000.0;
/// <summary>
/// 返回当前时间的毫秒数, 这个毫秒其实就是自1970年1月1日0时起的毫秒数
/// </summary>
public static long CurrentDateTimeToTicks()
{
return (DateTime.UtcNow.Ticks - Jan1st1970Ticks) / 10000;
}
public double DoubleValue
{
get { return Value * 1.0 / MillisecondsPerDay; }
set { Value = (long)(value * MillisecondsPerDay); }
}
/// <summary>
/// 返回指定时间的毫秒数, 这个毫秒其实就是自1970年1月1日0时起的毫秒数
/// </summary>
public static long DateTimeToTicks(DateTime datetime)
{
return (datetime.ToUniversalTime().Ticks - Jan1st1970Ticks) / 10000;
}
/// <summary>
/// 从一个代表自1970年1月1日0时起的毫秒数转换为DateTime (北京时间)
/// </summary>
public static DateTime TicksToDateTime(long ticks)
{
#pragma warning disable CS0618 // 类型或成员已过时
return TimeZone.CurrentTimeZone.ToLocalTime(TicksToUTCDateTime(ticks));
#pragma warning restore CS0618 // 类型或成员已过时
}
/// <summary>
/// 从一个代表自1970年1月1日0时起的毫秒数转换为DateTime (UTC时间)
/// </summary>
public static DateTime TicksToUTCDateTime(long ticks)
{
return new DateTime(ticks * 10000 + Jan1st1970Ticks);
}
public DateTimeInt64(long ticks)
{
ticks = MakeValidDate(ticks);
Value = ticks;
}
public DateTimeInt64(double doubleTicks)
{
doubleTicks = MakeValidDate((long)(doubleTicks * MillisecondsPerDay));
Value = (long)doubleTicks;
}
public DateTimeInt64(DateTime dateTime)
{
Value = DateTimeToTicks(dateTime);
}
public DateTimeInt64(int year, int month, int day)
{
Value = DateTimeToTicks(new DateTime(year, month, day));
}
public DateTimeInt64(int year, int month, int day, int hour, int minute, int second)
{
Value = DateTimeToTicks(new DateTime(year, month, day, hour, minute, second));
}
public DateTimeInt64(int year, int month, int day, int hour, int minute, int second, int millisecond)
{
Value = DateTimeToTicks(new DateTime(year, month, day, hour, minute, second, millisecond));
}
public DateTimeInt64(DateTimeInt64 dtValue)
{
Value = dtValue.Value;
}
public bool IsValidDate
{
get { return Value >= 0 && Value <= Dec31th9999Ticks - Jan1st1970Ticks; }
}
public DateTime DateTime
{
get { return TicksToDateTime(Value); }
set { Value = DateTimeToTicks(value); }
}
public static bool CheckValidDate(long ticks)
{
return ticks >= 0 && ticks <= Dec31th9999Ticks - Jan1st1970Ticks;
}
public static long MakeValidDate(long ticks)
{
if (ticks < 0)
ticks = 0;
if (ticks > Dec31th9999Ticks - Jan1st1970Ticks)
ticks = Dec31th9999Ticks - Jan1st1970Ticks;
return ticks;
}
public void AddMilliseconds(double milliseconds)
{
Value = DateTimeToTicks(DateTime.AddMilliseconds(milliseconds));
}
public void AddSeconds(double seconds)
{
Value = DateTimeToTicks(DateTime.AddSeconds(seconds));
}
public void AddMinutes(double minutes)
{
Value = DateTimeToTicks(DateTime.AddMinutes(minutes));
}
public void AddHours(double hours)
{
Value = DateTimeToTicks(DateTime.AddHours(hours));
}
public void AddDays(double days)
{
Value = DateTimeToTicks(DateTime.AddDays(days));
}
public void AddMonths(int months)
{
Value = DateTimeToTicks(DateTime.AddMonths(months));
}
public void AddYears(int years)
{
Value = DateTimeToTicks(DateTime.AddYears(years));
}
public static long operator -(DateTimeInt64 dtValue1, DateTimeInt64 dtValue2)
{
return dtValue1.Value - dtValue2.Value;
}
public static long operator +(DateTimeInt64 dtValue1, DateTimeInt64 dtValue2)
{
return dtValue1.Value + dtValue2.Value;
}
public static DateTimeInt64 operator -(DateTimeInt64 dtValue1, long dtValue2)
{
dtValue1.Value -= dtValue2;
return dtValue1;
}
public static DateTimeInt64 operator +(DateTimeInt64 dtValue1, long dtValue2)
{
dtValue1.Value += dtValue2;
return dtValue1;
}
public static DateTimeInt64 operator ++(DateTimeInt64 dtValue)
{
dtValue.AddDays(1);
return dtValue;
}
public static DateTimeInt64 operator --(DateTimeInt64 dtValue)
{
dtValue.AddDays(-1);
return dtValue;
}
public static implicit operator long(DateTimeInt64 dtValue)
{
return dtValue.Value;
}
public static implicit operator DateTimeInt64(long ticks)
{
return new DateTimeInt64(ticks);
}
public static implicit operator DateTimeInt64(DateTime dt)
{
return new DateTimeInt64(dt);
}
public static implicit operator DateTime(DateTimeInt64 dt)
{
return dt.DateTime;
}
public static implicit operator double(DateTimeInt64 dtValue)
{
return dtValue.DoubleValue;
}
public static implicit operator DateTimeInt64(double ticks)
{
return new DateTimeInt64(ticks);
}
public static bool operator ==(DateTimeInt64 dtValue1, DateTimeInt64 dtValue2)
{
return dtValue1.Value == dtValue2.Value;
}
public static bool operator !=(DateTimeInt64 dtValue1, DateTimeInt64 dtValue2)
{
return dtValue1.Value != dtValue2.Value;
}
public static bool operator ==(DateTimeInt64 dtValue, long ticks)
{
return dtValue.Value == ticks;
}
public static bool operator !=(DateTimeInt64 dtValue, long ticks)
{
return dtValue.Value != ticks;
}
public static bool operator <(DateTimeInt64 dtValue1, DateTimeInt64 dtValue2)
{
return dtValue1.Value < dtValue2.Value;
}
public static bool operator >(DateTimeInt64 dtValue1, DateTimeInt64 dtValue2)
{
return dtValue1.Value > dtValue2.Value;
}
public static bool operator <=(DateTimeInt64 dtValue1, DateTimeInt64 dtValue2)
{
return dtValue1.Value <= dtValue2.Value;
}
public static bool operator >=(DateTimeInt64 dtValue1, DateTimeInt64 dtValue2)
{
return dtValue1.Value >= dtValue2.Value;
}
public static bool operator <(DateTimeInt64 dtValue, long ticks)
{
return dtValue.Value < ticks;
}
public static bool operator >(DateTimeInt64 dtValue, long ticks)
{
return dtValue.Value > ticks;
}
public static bool operator <=(DateTimeInt64 dtValue, long ticks)
{
return dtValue.Value <= ticks;
}
public static bool operator >=(DateTimeInt64 dtValue, long ticks)
{
return dtValue.Value >= ticks;
}
public override bool Equals(object obj)
{
if (obj is DateTimeInt64 dtValue)
{
return dtValue.Value == Value;
}
else if (obj is long longValue)
{
return longValue == Value;
}
else
{
return false;
}
}
public override int GetHashCode()
{
return Value.GetHashCode();
}
int IComparable.CompareTo(object obj)
{
if (!(obj is DateTimeInt64)) throw new ArgumentException();
return (Value).CompareTo(((DateTimeInt64)obj).Value);
}
public string ToString(long ticks)
{
return ToString(ticks, DefaultFormatString);
}
public override string ToString()
{
return ToString(Value, DefaultFormatString);
}
public string ToString(string fmtStr)
{
return ToString(Value, fmtStr);
}
public static string ToString(long dtValue, string fmtStr)
{
DateTime dt = TicksToDateTime(dtValue);
return dt.ToString(fmtStr);
}
public bool Equals(DateTimeInt64 dtValue)
{
return Value == dtValue.Value;
}
public bool Equals(long ticks)
{
return Value == ticks;
}
public bool Equals(DateTime datetime)
{
return Value == (new DateTimeInt64(datetime)).Value;
}
public string DateTimeString => DateTime.DateTimeString();
public string DateString => DateTime.DateString();
public string TimeString => DateTime.TimeString();
public string HourMinuteString => DateTime.ToString("HH:mm");
public int Year => DateTime.Year;
public int Month => DateTime.Month;
public int Day => DateTime.Day;
public int Hour => DateTime.Hour;
public int Minute => DateTime.Minute;
public int Second => DateTime.Second;
public int Millisecond => DateTime.Millisecond;
}
}

View File

@ -116,11 +116,19 @@ namespace Sunny.UI
/// <summary> /// <summary>
/// 背景色 /// 背景色
/// </summary> /// </summary>
public Color BackColor; public Color BackColor { get; set; }
/// <summary> /// <summary>
/// 前景色 /// 前景色
/// </summary> /// </summary>
public Color ForeColor; public Color ForeColor { get; set; }
public Color HoverColor { get; set; }
public Color SelectedColor { get; set; }
public Color SelectedForeColor { get; set; }
public bool HaveHoveColor { get; set; } = false;
} }
} }

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -19,10 +19,7 @@
* 2020-01-01: V2.2.0 * 2020-01-01: V2.2.0
******************************************************************************/ ******************************************************************************/
using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Text.RegularExpressions;
using System.Windows.Forms; using System.Windows.Forms;
namespace Sunny.UI namespace Sunny.UI
@ -32,38 +29,6 @@ namespace Sunny.UI
/// </summary> /// </summary>
public static class DirEx public static class DirEx
{ {
/// <summary>
/// 调用WINAPI删除文件夹
/// </summary>
/// <param name="directory">文件夹</param>
public static void Delete(this string directory)
{
if (Directory.Exists(directory))
{
var files = Directory.EnumerateFiles(directory, "*", SearchOption.AllDirectories);
foreach (string file in files)
{
Win32.Kernel.DeleteFile(file);
}
var directories = Directory.EnumerateDirectories(directory, "*", SearchOption.AllDirectories);
foreach (string dir in directories)
{
Directory.Delete(dir, true);
}
}
}
/// <summary>
/// 当前可执行文件路径,末尾包括文件夹分隔符(windows为\linux为/)
/// </summary>
/// <returns>结果</returns>
public static string CurrentDir()
{
//return Environment.CurrentDirectory.DealPath();
return AppDomain.CurrentDomain.BaseDirectory.DealPath();
}
/// <summary> /// <summary>
/// 选择文件夹 /// 选择文件夹
/// </summary> /// </summary>
@ -73,17 +38,9 @@ namespace Sunny.UI
/// <returns>是否选择文件夹</returns> /// <returns>是否选择文件夹</returns>
public static bool SelectDir(string desc, ref string dir, bool showNewButton = true) public static bool SelectDir(string desc, ref string dir, bool showNewButton = true)
{ {
bool bOk = false; using FolderBrowserDialog fd = new FolderBrowserDialog { Description = desc, ShowNewFolderButton = showNewButton, SelectedPath = dir };
using (FolderBrowserDialog fd = new FolderBrowserDialog { Description = desc, ShowNewFolderButton = showNewButton }) bool bOk = fd.ShowDialog() == DialogResult.OK;
{ if (bOk) dir = fd.SelectedPath.DealPath();
fd.SelectedPath = dir;
if (fd.ShowDialog() == DialogResult.OK)
{
dir = fd.SelectedPath.DealPath();
bOk = true;
}
}
return bOk; return bOk;
} }
@ -95,118 +52,12 @@ namespace Sunny.UI
/// <returns>是否选择文件夹</returns> /// <returns>是否选择文件夹</returns>
public static bool SelectDirEx(string desc, ref string dir) public static bool SelectDirEx(string desc, ref string dir)
{ {
bool bOk = false; using FolderBrowserDialogEx fd = new FolderBrowserDialogEx { Description = desc, DirectoryPath = dir };
using (FolderBrowserDialogEx fd = new FolderBrowserDialogEx { Description = desc, DirectoryPath = dir }) bool bOk = fd.ShowDialog(null) == DialogResult.OK;
{ if (bOk) dir = fd.DirectoryPath.DealPath();
if (fd.ShowDialog(null) == DialogResult.OK)
{
dir = fd.DirectoryPath.DealPath();
bOk = true;
}
}
return bOk; return bOk;
} }
/// <summary>
/// Temp文件夹末尾包括\
/// </summary>
/// <returns>结果</returns>
public static string TempPath()
{
return Path.GetTempPath().DealPath();
}
/// <summary>
/// Temp文件夹下唯一的新建临时文件夹末尾包括\
/// </summary>
/// <returns>结果</returns>
public static string TempRandomPath()
{
string path = FileEx.TempFileName(false);
Directory.CreateDirectory(path);
return path.DealPath();
}
/// <summary>
/// 检测指定目录是否存在
/// </summary>
/// <param name="dir">目录的绝对路径</param>
/// <returns>结果</returns>
public static bool Exists(string dir)
{
return Directory.Exists(dir);
}
/// <summary>
/// 创建一个目录
/// </summary>
/// <param name="dir">目录的绝对路径</param>
public static void CreateDir(string dir)
{
//如果目录不存在则创建该目录
if (!Exists(dir))
{
Directory.CreateDirectory(dir);
}
}
/// <summary>
/// 尝试删除非空文件夹
/// </summary>
/// <param name="dir">文件夹</param>
/// <returns>结果</returns>
public static bool TryDelete(string dir)
{
try
{
Directory.Delete(dir);
return !Directory.Exists(dir);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
}
/// <summary>
/// 清空指定的文件夹,但不删除文件夹
/// </summary>
/// <param name="dir">文件夹</param>
public static void EmptyDir(string dir)
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
if (File.Exists(d))
{
FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly", StringComparison.Ordinal) != -1)
{
fi.Attributes = FileAttributes.Normal;
}
fi.TryDelete();
}
else
{
DirectoryInfo d1 = new DirectoryInfo(d);
EmptyDir(d1.FullName); //递归删除子文件夹
TryDelete(d);
}
}
}
/// <summary>
/// 删除指定的文件夹
/// </summary>
/// <param name="dir">文件夹</param>
public static void DeleteDir(string dir)
{
EmptyDir(dir);
TryDelete(dir);
}
/// <summary> /// <summary>
/// 调用系统资源管理器打开文件夹,如果是文件则选中文件 /// 调用系统资源管理器打开文件夹,如果是文件则选中文件
/// </summary> /// </summary>
@ -218,236 +69,10 @@ namespace Sunny.UI
System.Diagnostics.Process.Start("Explorer.exe", @"/select," + dir); System.Diagnostics.Process.Start("Explorer.exe", @"/select," + dir);
} }
if (Exists(dir)) if (Directory.Exists(dir))
{ {
System.Diagnostics.Process.Start("Explorer.exe", dir); System.Diagnostics.Process.Start("Explorer.exe", dir);
} }
} }
/// <summary>
/// 在指定目录下创建以年月日分级的子目录,末尾包括\
/// </summary>
/// <param name="dt">日期</param>
/// <param name="path">文件夹</param>
/// <param name="createIfNotExist">不存在是否创建</param>
/// <returns>文件夹名</returns>
public static string YearMonthDayFolder(this DateTime dt, string path, bool createIfNotExist = false)
{
if (path.IsNullOrEmpty())
{
return path;
}
string result = path.DealPath() + dt.YearString() + "\\" + dt.YearMonthString() + "\\" + dt.DateString() + "\\";
if (createIfNotExist)
{
DirEx.CreateDir(result);
}
return result;
}
/// <summary>
/// 在指定目录下创建以年月分级的子目录,末尾包括\
/// </summary>
/// <param name="dt">日期</param>
/// <param name="path">文件夹</param>
/// <param name="createIfNotExist">不存在是否创建</param>
/// <returns>文件夹名</returns>
public static string YearMonthFolder(this DateTime dt, string path, bool createIfNotExist = false)
{
if (path.IsNullOrEmpty())
{
return path;
}
string result = path.DealPath() + dt.YearString() + "\\" + dt.YearMonthString() + "\\";
if (createIfNotExist)
{
DirEx.CreateDir(result);
}
return result;
}
/// <summary>
/// 创建年月文件夹,末尾包括\
/// </summary>
/// <param name="dir">路径</param>
/// <param name="datetime">时间</param>
/// <returns>文件夹</returns>
public static string CreateYearMonthFolder(string dir, DateTime datetime)
{
return datetime.YearMonthFolder(dir, true);
}
/// <summary>
/// 创建年月日文件夹,末尾包括\
/// </summary>
/// <param name="dir">路径</param>
/// <param name="datetime">时间</param>
/// <returns>文件夹</returns>
public static string CreateYearMonthDayFolder(string dir, DateTime datetime)
{
return datetime.YearMonthDayFolder(dir, true);
}
/// <summary>
/// 获取指定目录中的匹配项(文件或目录)
/// </summary>
/// <param name="dir">要搜索的目录</param>
/// <param name="regexPattern">项名模式正则。null表示忽略模式匹配返回所有项</param>
/// <param name="depth">递归深度。负数表示不限0表示仅顶级</param>
/// <param name="throwEx">是否抛异常</param>
/// <returns>结果</returns>
public static string[] GetFileSystemEntries(string dir, string regexPattern = null, int depth = 0, bool throwEx = false)
{
List<string> lst = new List<string>();
try
{
foreach (string item in Directory.GetFileSystemEntries(dir))
{
try
{
string filename = Path.GetFileName(item);
if (regexPattern == null || Regex.IsMatch(filename, regexPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline))
{
lst.Add(item);
}
//递归
if (depth != 0 && (File.GetAttributes(item) & FileAttributes.Directory) == FileAttributes.Directory)
{
lst.AddRange(GetFileSystemEntries(item, regexPattern, depth - 1, throwEx));
}
}
catch
{
if (throwEx)
{
throw;
}
}
}
}
catch
{
if (throwEx)
{
throw;
}
}
return lst.ToArray();
}
/// <summary>
/// 获取指定目录中的匹配文件
/// </summary>
/// <param name="dir">要搜索的目录</param>
/// <param name="regexPattern">文件名模式正则。null表示忽略模式匹配返回所有文件</param>
/// <param name="depth">递归深度。负数表示不限0表示仅顶级</param>
/// <param name="throwEx">是否抛异常</param>
/// <returns>结果</returns>
public static string[] GetFiles(string dir, string regexPattern = null, int depth = 0, bool throwEx = false)
{
List<string> lst = new List<string>();
try
{
foreach (string item in Directory.GetFileSystemEntries(dir))
{
try
{
bool isFile = (File.GetAttributes(item) & FileAttributes.Directory) != FileAttributes.Directory;
string filename = Path.GetFileName(item);
if (isFile && (regexPattern == null || Regex.IsMatch(filename, regexPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline)))
{
lst.Add(item);
}
//递归
if (depth != 0 && !isFile)
{
lst.AddRange(GetFiles(item, regexPattern, depth - 1, throwEx));
}
}
catch
{
if (throwEx)
{
throw;
}
}
}
}
catch
{
if (throwEx)
{
throw;
}
}
return lst.ToArray();
}
/// <summary>
/// 获取指定目录中的匹配目录
/// </summary>
/// <param name="dir">要搜索的目录</param>
/// <param name="regexPattern">目fu录名模式正则。null表示忽略模式匹配返回所有目录</param>
/// <param name="depth">递归深度。负数表示不限0表示仅顶级</param>
/// <param name="throwEx">是否抛异常</param>
/// <returns>结果</returns>
public static string[] GetDirectories(string dir, string regexPattern = null, int depth = 0, bool throwEx = false)
{
List<string> lst = new List<string>();
try
{
foreach (string item in Directory.GetDirectories(dir))
{
try
{
string filename = Path.GetFileName(item);
if (filename == null)
{
continue;
}
if (regexPattern == null || Regex.IsMatch(filename, regexPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline))
{
lst.Add(item);
}
//递归
if (depth != 0)
{
lst.AddRange(GetDirectories(item, regexPattern, depth - 1, throwEx));
}
}
catch
{
if (throwEx)
{
throw;
}
}
}
}
catch
{
if (throwEx)
{
throw;
}
}
return lst.ToArray();
}
} }
} }

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -427,12 +427,10 @@ namespace Sunny.UI
} }
// Simply copy the argb values array // Simply copy the argb values array
// ReSharper disable once InconsistentNaming
int* s0t = _scan0; int* s0t = _scan0;
fixed (int* source = colors) fixed (int* source = colors)
{ {
// ReSharper disable once InconsistentNaming
int* s0s = source; int* s0s = source;
int count = Width * Height; int count = Width * Height;

View File

@ -1,356 +0,0 @@
/******************************************************************************
* SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
*
* Blog: https://www.cnblogs.com/yhuse
* Gitee: https://gitee.com/yhuse/SunnyUI
* GitHub: https://github.com/yhuse/SunnyUI
*
* SunnyUI.dll can be used for free under the GPL-3.0 license.
* If you use this code, please keep this note.
* 使
******************************************************************************
* : FastLZ.cs
* : FastLZ压缩解压类
* : V3.1
* : 2022-03-31
* : https://ariya.github.io/FastLZ/
*
* FastLZ (MIT license) is an ANSI C/C90 implementation of Lempel-Ziv 77
* algorithm (LZ77) of lossless data compression. It is suitable to compress
* series of text/paragraphs, sequences of raw pixel data, or any other blocks
* of data with lots of repetition. It is not intended to be used on images,
* videos, and other formats of data typically already in an optimal
* compressed form.
*
* 2022-03-31: V3.1.2
* 2022-07-07: V3.2.1
* 2022-07-07: V3.2.1 FastLZx86.dllFastLZx64.dll资源文件
******************************************************************************
*
* int fastlz_compress_level(int level, const void* input, int length, void* output);
*
* level 12
* 1
* 2
* 使fastlz_decompress进行解压缩
*
* input
* length 16
* output 5%66
*
*
******************************************************************************
*
* int fastlz_decompress(const void* input, int length, void* output, int maxout);
*
* input
* length
* output
* maxout maxout中指定的值
*
* 0
*
******************************************************************************
* CompressExDecompressEx
* 168!\r\n结尾
* 20:
* 4(!FLZ)
* 4SecondsUnix时间戳Jan1st1970开始的秒数
* 4Milliseconds
* 4(maxout)
* 4()
* 8:
* 4
* 1(*)
* 1(CRC,,0)
* 2(\r\n)
******************************************************************************
* FastLZx86.dllFastLZx64.dll见项目 https://gitee.com/yhuse/SunnyUI.FastLZ
******************************************************************************/
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace Sunny.UI
{
public static unsafe class FastLZx86
{
[DllImport("FastLZx86.dll", EntryPoint = "FastLZ_Compress", CallingConvention = CallingConvention.Cdecl)]
public static extern int FastLZ_Compress(void* input, int length, void* output);
[DllImport("FastLZx86.dll", EntryPoint = "FastLZ_Compress_level", CallingConvention = CallingConvention.Cdecl)]
public static extern int FastLZ_Compress_level(int level, void* input, int length, void* output);
[DllImport("FastLZx86.dll", EntryPoint = "FastLZ_Decompress", CallingConvention = CallingConvention.Cdecl)]
public static extern int FastLZ_Decompress(void* input, int length, void* output, int maxout);
}
public static unsafe class FastLZx64
{
[DllImport("FastLZx64.dll", EntryPoint = "FastLZ_Compress", CallingConvention = CallingConvention.Cdecl)]
public static extern int FastLZ_Compress(void* input, int length, void* output);
[DllImport("FastLZx64.dll", EntryPoint = "FastLZ_Compress_level", CallingConvention = CallingConvention.Cdecl)]
public static extern int FastLZ_Compress_level(int level, void* input, int length, void* output);
[DllImport("FastLZx64.dll", EntryPoint = "FastLZ_Decompress", CallingConvention = CallingConvention.Cdecl)]
public static extern int FastLZ_Decompress(void* input, int length, void* output, int maxout);
}
public enum FastLZCompressionLevel
{
Level1 = 1,
Level2 = 2
}
/// <summary>
/// FastLZ压缩解压类
/// </summary>
public static unsafe class FastLZ
{
/// <summary>
/// 是否64位
/// </summary>
/// <returns></returns>
private static bool Is64bitApp()
{
return IntPtr.Size == 8;
}
/// <summary>
/// 压缩(原生)
/// </summary>
/// <param name="input">输入</param>
/// <param name="begin">起始位置</param>
/// <param name="length">长度</param>
/// <returns>压缩结果</returns>
public static byte[] Compress(byte[] input, int begin, int length)
{
CheckFastLZDll();
byte[] output = new byte[Math.Max(length * 2, 66)];
fixed (void* pSrc1 = &input[begin])
fixed (void* pSrc2 = output)
{
int outlen = Is64bitApp() ? FastLZx64.FastLZ_Compress(pSrc1, length, pSrc2) : FastLZx86.FastLZ_Compress(pSrc1, length, pSrc2);
byte[] result = new byte[outlen];
Array.Copy(output, 0, result, 0, outlen);
return result;
}
}
/// <summary>
/// 压缩(原生)
/// </summary>
/// <param name="level">压缩级别</param>
/// <param name="input">输入</param>
/// <param name="begin">起始位置</param>
/// <param name="length">长度</param>
/// <returns>压缩结果</returns>
public static byte[] Compress(FastLZCompressionLevel level, byte[] input, int begin, int length)
{
CheckFastLZDll();
byte[] output = new byte[Math.Max(length * 2, 66)];
fixed (void* pSrc1 = &input[begin])
fixed (void* pSrc2 = output)
{
int outlen = Is64bitApp() ? FastLZx64.FastLZ_Compress_level((int)level, pSrc1, length, pSrc2) : FastLZx86.FastLZ_Compress_level((int)level, pSrc1, length, pSrc2);
byte[] result = new byte[outlen];
Array.Copy(output, 0, result, 0, outlen);
return result;
}
}
/// <summary>
/// 解压缩(原生)
/// </summary>
/// <param name="input">输入</param>
/// <param name="begin">起始位置</param>
/// <param name="length">长度</param>
/// <param name="maxout">解压结果最大长度</param>
/// <returns>解压缩结果</returns>
public static byte[] Decompress(byte[] input, int begin, int length, int maxout)
{
CheckFastLZDll();
byte[] output = new byte[maxout + 66];
fixed (byte* pSrc1 = &input[begin])
fixed (byte* pSrc2 = output)
{
int outlen = Is64bitApp() ? FastLZx64.FastLZ_Decompress(pSrc1, length, pSrc2, output.Length) : FastLZx86.FastLZ_Decompress(pSrc1, length, pSrc2, output.Length);
byte[] result = new byte[outlen];
Array.Copy(output, 0, result, 0, outlen);
return result;
}
}
private static byte[] ExHead = "!FLZ".ToEnBytes(4);
private const int ExHeadAllLength = 20;
private const int ExTailAllLength = 8;
private static DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
/// <summary>
/// 压缩(扩展)
/// </summary>
/// <param name="input">输入</param>
/// <param name="begin">起始位置</param>
/// <param name="length">长度</param>
/// <param name="datetime">时间</param>
/// <param name="index">索引</param>
/// <returns>压缩结果</returns>
public static byte[] CompressEx(byte[] input, int begin, int length, DateTime dateTime, int index)
{
CheckFastLZDll();
byte[] result = CompressEx(input, begin, length);
if (result.Length > 0)
{
TimeSpan span = dateTime - Jan1st1970;
int totalSeconds = (int)span.TotalSeconds;
int milliseconds = span.Milliseconds;
Array.Copy(BitConverter.GetBytes(totalSeconds), 0, result, 4, 4);
Array.Copy(BitConverter.GetBytes(milliseconds), 0, result, 8, 4);
Array.Copy(BitConverter.GetBytes(index), 0, result, result.Length - 8, 4);
}
return result;
}
/// <summary>
/// 压缩(扩展)
/// </summary>
/// <param name="input">输入</param>
/// <param name="begin">起始位置</param>
/// <param name="length">长度</param>
/// <returns>压缩结果</returns>
public static byte[] CompressEx(byte[] input, int begin, int length)
{
CheckFastLZDll();
byte[] result = new byte[0];
if (begin + length > input.Length) return result;
byte[] output = new byte[Math.Max(length * 2, 66)];
fixed (void* pSrc1 = &input[begin])
fixed (void* pSrc2 = output)
{
int outlen = Is64bitApp() ? FastLZx64.FastLZ_Compress(pSrc1, length, pSrc2) : FastLZx86.FastLZ_Compress(pSrc1, length, pSrc2);
result = new byte[outlen + ExHeadAllLength + ExTailAllLength];
Array.Copy(ExHead, 0, result, 0, ExHead.Length);
Array.Copy(BitConverter.GetBytes((int)0), 0, result, 4, 4);
Array.Copy(BitConverter.GetBytes((int)0), 0, result, 8, 4);
Array.Copy(BitConverter.GetBytes((int)output.Length), 0, result, 12, 4);
Array.Copy(BitConverter.GetBytes((int)outlen), 0, result, 16, 4);
Array.Copy(output, 0, result, ExHeadAllLength, outlen);
Array.Copy(BitConverter.GetBytes((int)0), 0, result, result.Length - 8, 4);
result[result.Length - 4] = 42; //*
result[result.Length - 3] = 0; //CRC
result[result.Length - 2] = 13; //\r
result[result.Length - 1] = 10; //\n
return result;
}
}
/// <summary>
/// 解压缩(扩展)
/// </summary>
/// <param name="input">输入</param>
/// <param name="begin">起始位置</param>
/// <param name="length">长度</param>
/// <returns>解压缩结果</returns>
public static byte[] DecompressEx(byte[] input, int begin, int length)
{
CheckFastLZDll();
byte[] result = new byte[0];
if (input.Length <= 2 + ExHeadAllLength + ExTailAllLength) return result;
if (begin + length > input.Length) return result;
if (input[begin] != 33) return result;
if (input[begin + length - 4] != 42) return result;
if (length != BitConverter.ToInt32(input, begin + 16) + ExHeadAllLength + ExTailAllLength) return result;
byte[] output = new byte[BitConverter.ToInt32(input, begin + ExHead.Length)];
fixed (byte* pSrc1 = &input[begin + ExHeadAllLength])
fixed (byte* pSrc2 = output)
{
length = length - ExHeadAllLength - ExTailAllLength;
int outlen = Is64bitApp() ? FastLZx64.FastLZ_Decompress(pSrc1, length, pSrc2, output.Length) : FastLZx86.FastLZ_Decompress(pSrc1, length, pSrc2, output.Length);
result = new byte[outlen];
Array.Copy(output, 0, result, 0, outlen);
return result;
}
}
/// <summary>
/// 解压缩(扩展)
/// </summary>
/// <param name="input">输入</param>
/// <param name="begin">起始位置</param>
/// <param name="length">长度</param>
/// <param name="datetime">时间</param>
/// <param name="index">索引</param>
/// <returns>解压缩结果</returns>
public static byte[] DecompressEx(byte[] input, int begin, int length, out DateTime datetime, out int index)
{
CheckFastLZDll();
byte[] result = DecompressEx(input, begin, length);
datetime = Jan1st1970;
index = 0;
if (result.Length > 0)
{
datetime = Jan1st1970.AddSeconds(BitConverter.ToInt32(input, begin + 4)).AddMilliseconds(BitConverter.ToInt32(input, begin + 8));
index = BitConverter.ToInt32(input, begin + length - 8);
}
return result;
}
private static bool FileExist = false;
public static bool CheckFastLZDll()
{
if (FileExist) return true;
if (File.Exists(DirEx.CurrentDir() + "FastLZx86.dll") && File.Exists(DirEx.CurrentDir() + "FastLZx64.dll"))
{
FileExist = true;
return true;
}
try
{
CreateResourceToFile(DirEx.CurrentDir() + "FastLZx86.dll", "Sunny.UI.Common.FastLZx86.dat");
CreateResourceToFile(DirEx.CurrentDir() + "FastLZx64.dll", "Sunny.UI.Common.FastLZx64.dat");
}
catch
{
return false;
}
FileExist = File.Exists(DirEx.CurrentDir() + "FastLZx86.dll") && File.Exists(DirEx.CurrentDir() + "FastLZx64.dll");
return FileExist;
}
/// <summary>
/// 从系统资源中保存文件
/// </summary>
/// <param name="file">文件名</param>
/// <param name="resource">资源名称</param>
private static void CreateResourceToFile(string file, string resource)
{
if (!File.Exists(file))
{
Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);
if (stream != null)
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
stream.Close();
File.WriteAllBytes(file, buffer);
}
}
}
}
}

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -43,7 +43,7 @@ namespace Sunny.UI
/// <param name="targetFileName"></param> /// <param name="targetFileName"></param>
/// <param name="bFailIfExists"></param> /// <param name="bFailIfExists"></param>
/// <returns></returns> /// <returns></returns>
public static bool Copy(this string sourceFileName, string targetFileName, bool bFailIfExists = true) public static bool Copy(string sourceFileName, string targetFileName, bool bFailIfExists = true)
{ {
if (File.Exists(sourceFileName)) if (File.Exists(sourceFileName))
{ {
@ -53,15 +53,6 @@ namespace Sunny.UI
return false; return false;
} }
/// <summary>
/// 调用WINAPI删除文件
/// </summary>
/// <param name="lpFileName">文件</param>
public static int DeleteFile(string lpFileName)
{
return Win32.Kernel.DeleteFile(lpFileName);
}
/// <summary> /// <summary>
/// 打开文件夹对话框 /// 打开文件夹对话框
/// </summary> /// </summary>
@ -71,27 +62,22 @@ namespace Sunny.UI
/// <returns>打开是否成功</returns> /// <returns>打开是否成功</returns>
public static bool OpenDialog(ref string filename, string filter = "", string defaultExt = "") public static bool OpenDialog(ref string filename, string filter = "", string defaultExt = "")
{ {
using (OpenFileDialog od = new OpenFileDialog { Title = "打开" }) using OpenFileDialog od = new OpenFileDialog { Title = UIStyles.CurrentResources.Open };
{
try
{
od.FileName = filename;
od.Filter = filter;
}
catch
{
od.Filter = "";
}
od.DefaultExt = defaultExt; try
if (od.ShowDialog() == DialogResult.OK) {
{ od.FileName = filename;
filename = od.FileName; od.Filter = filter;
return true; }
} catch
{
od.Filter = "";
} }
return false; od.DefaultExt = defaultExt;
bool isOk = od.ShowDialog() == DialogResult.OK;
if (isOk) filename = od.FileName;
return isOk;
} }
/// <summary> /// <summary>
@ -103,27 +89,21 @@ namespace Sunny.UI
/// <returns>保存是否成功</returns> /// <returns>保存是否成功</returns>
public static bool SaveDialog(ref string filename, string filter = "", string defaultExt = "") public static bool SaveDialog(ref string filename, string filter = "", string defaultExt = "")
{ {
using (SaveFileDialog od = new SaveFileDialog { Title = "保存" }) using SaveFileDialog od = new SaveFileDialog { Title = UIStyles.CurrentResources.Save };
try
{ {
try od.FileName = filename;
{ od.Filter = filter;
od.FileName = filename; }
od.Filter = filter; catch
} {
catch od.Filter = "";
{
od.Filter = "";
}
od.DefaultExt = defaultExt;
if (od.ShowDialog() == DialogResult.OK)
{
filename = od.FileName;
return true;
}
} }
return false; od.DefaultExt = defaultExt;
bool isOk = od.ShowDialog() == DialogResult.OK;
if (isOk) filename = od.FileName;
return isOk;
} }
/// <summary> /// <summary>
@ -542,52 +522,6 @@ namespace Sunny.UI
} }
} }
/// <summary>
/// 复制
/// </summary>
/// <param name="source">源目录</param>
/// <param name="dest">目标目录</param>
public static void Copy(string source, string dest)
{
Copy(new DirectoryInfo(source), new DirectoryInfo(dest));
}
/// <summary>
/// 复制
/// </summary>
/// <param name="source">源目录</param>
/// <param name="dest">目标目录</param>
public static void Copy(DirectoryInfo source, DirectoryInfo dest)
{
if (dest.FullName.StartsWith(source.FullName, StringComparison.CurrentCultureIgnoreCase))
{
throw new Exception("父目录不能拷贝到子目录!");
}
if (!source.Exists)
{
return;
}
if (!dest.Exists)
{
dest.Create();
}
FileInfo[] files = source.GetFiles();
foreach (FileInfo file in files)
{
File.Copy(file.FullName, Path.Combine(dest.FullName, file.Name), true);
}
DirectoryInfo[] dirs = source.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
Copy(dir.FullName, Path.Combine(dest.FullName, dir.Name));
}
}
/// <summary> /// <summary>
/// 根据完整文件路径获取FileStream /// 根据完整文件路径获取FileStream
/// </summary> /// </summary>
@ -605,16 +539,6 @@ namespace Sunny.UI
return fileStream; return fileStream;
} }
/// <summary>
/// 检测指定文件是否存在,如果存在则返回true。
/// </summary>
/// <param name="filePath">文件的绝对路径</param>
/// <returns>结果</returns>
public static bool Exists(string filePath)
{
return File.Exists(filePath);
}
/// <summary> /// <summary>
/// 创建一个文件。 /// 创建一个文件。
/// </summary> /// </summary>
@ -625,7 +549,7 @@ namespace Sunny.UI
try try
{ {
//如果文件不存在则创建该文件 //如果文件不存在则创建该文件
if (!Exists(filePath)) if (!File.Exists(filePath))
{ {
//创建一个FileInfo对象 //创建一个FileInfo对象
FileInfo file = new FileInfo(filePath); FileInfo file = new FileInfo(filePath);
@ -654,7 +578,7 @@ namespace Sunny.UI
try try
{ {
//如果文件不存在则创建该文件 //如果文件不存在则创建该文件
if (!Exists(filePath)) if (!File.Exists(filePath))
{ {
//创建一个FileInfo对象 //创建一个FileInfo对象
FileInfo file = new FileInfo(filePath); FileInfo file = new FileInfo(filePath);

View File

@ -3,7 +3,6 @@ using System.ComponentModel;
using System.Drawing.Design; using System.Drawing.Design;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Windows.Forms; using System.Windows.Forms;
// ReSharper disable UnusedMember.Local
namespace Sunny.UI namespace Sunny.UI
{ {

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -51,78 +51,9 @@ namespace Sunny.UI
/// <returns>是否在区域内</returns> /// <returns>是否在区域内</returns>
public static bool InRegion(this Point point, Point[] points) public static bool InRegion(this Point point, Point[] points)
{ {
using (GraphicsPath path = points.Path()) using GraphicsPath path = points.Path();
{ using Region region = path.Region();
using (Region region = path.Region()) return region.IsVisible(point);
{
return region.IsVisible(point);
}
}
}
/// <summary>
/// 颜色是否是浅色
/// </summary>
/// <param name="color">颜色</param>
/// <returns>是否是浅色</returns>
public static bool IsLightColor(this Color color)
{
return (0.299 * color.R + 0.587 * color.G + 0.114 * color.B) / 255 > 0.5;
}
/// <summary>
/// 根据背景色判断前景色
/// </summary>
/// <param name="backColor">背景色</param>
/// <returns>前景色</returns>
public static Color ForeColor(Color backColor)
{
return backColor.IsLightColor() ? Color.Black : Color.White;
}
/// <summary>
/// SizeF转Size
/// </summary>
/// <param name="size">SizeF</param>
/// <returns>Size</returns>
public static Size Size(this SizeF size)
{
return new Size(size.Width.RoundEx(), size.Height.RoundEx());
}
/// <summary>
/// PointF转Point
/// </summary>
/// <param name="point">PointF</param>
/// <returns>Point</returns>
public static Point Point(this PointF point)
{
return new Point(point.X.RoundEx(), point.Y.RoundEx());
}
/// <summary>
/// Size增加长宽
/// </summary>
/// <param name="size">Size</param>
/// <param name="width">宽</param>
/// <param name="height">长</param>
/// <returns>结果</returns>
public static Size Add(this Size size, int width, int height)
{
return new Size(size.Width + width, size.Height + height);
}
/// <summary>
/// SizeF增加长宽
/// </summary>
/// <param name="size">SizeF</param>
/// <param name="width">宽</param>
/// <param name="height">长</param>
/// <returns>结果</returns>
public static SizeF Add(this SizeF size, float width, float height)
{
return new SizeF(size.Width + width, size.Height + height);
} }
/// <summary> /// <summary>
@ -133,13 +64,9 @@ namespace Sunny.UI
/// <returns>是否在区域内</returns> /// <returns>是否在区域内</returns>
public static bool InRegion(this PointF point, PointF[] points) public static bool InRegion(this PointF point, PointF[] points)
{ {
using (GraphicsPath path = points.Path()) using GraphicsPath path = points.Path();
{ using Region region = path.Region();
using (Region region = path.Region()) return region.IsVisible(point);
{
return region.IsVisible(point);
}
}
} }
/// <summary> /// <summary>
@ -191,12 +118,10 @@ namespace Sunny.UI
public static Color[] GradientColors(this Color startColor, Color endColor, int count) public static Color[] GradientColors(this Color startColor, Color endColor, int count)
{ {
count = Math.Max(count, 2); count = Math.Max(count, 2);
Bitmap image = new Bitmap(1024, 3); using Bitmap image = new Bitmap(1024, 3);
Graphics g = image.Graphics(); using Graphics g = image.Graphics();
Brush br = new LinearGradientBrush(image.Bounds(), startColor, endColor, 0.0F); using Brush br = new LinearGradientBrush(image.Bounds(), startColor, endColor, 0.0F);
g.FillRectangle(br, image.Bounds()); g.FillRectangle(br, image.Bounds());
br.Dispose();
g.Dispose();
Color[] colors = new Color[count]; Color[] colors = new Color[count];
colors[0] = startColor; colors[0] = startColor;
@ -215,7 +140,6 @@ namespace Sunny.UI
fb.Dispose(); fb.Dispose();
} }
image.Dispose();
return colors; return colors;
} }
@ -458,7 +382,6 @@ namespace Sunny.UI
/// <summary> /// <summary>
/// 创建圆角路径 /// 创建圆角路径
/// </summary> /// </summary>
/// <param name="g">绘图图面</param>
/// <param name="rect">区域</param> /// <param name="rect">区域</param>
/// <param name="radius">圆角大小</param> /// <param name="radius">圆角大小</param>
/// <param name="cornerLeftTop">左上角</param> /// <param name="cornerLeftTop">左上角</param>
@ -543,27 +466,6 @@ namespace Sunny.UI
return g; return g;
} }
/// <summary>
/// Color转HTML
/// </summary>
/// <param name="color">Color</param>
/// <returns>HTML</returns>
public static string ToHTML(this Color color)
{
return ColorTranslator.ToHtml(color);
}
/// <summary>
/// HTML转Color
/// </summary>
/// <param name="htmlColor">HTML</param>
/// <param name="alpha">透明度</param>
/// <returns>Color</returns>
public static Color ToColor(this string htmlColor, int alpha = 255)
{
return Color.FromArgb(alpha > 255 ? 255 : alpha, ColorTranslator.FromHtml(htmlColor));
}
/// <summary> /// <summary>
/// 颜色是否为空 /// 颜色是否为空
/// </summary> /// </summary>

View File

@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* SunnyUI * SunnyUI
* CopyRight (C) 2012-2023 ShenYongHua(). * CopyRight (C) 2012-2025 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com * QQ群56829229 QQ17612584 EMailSunnyUI@QQ.Com
* *
* Blog: https://www.cnblogs.com/yhuse * Blog: https://www.cnblogs.com/yhuse
@ -37,6 +37,7 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms; using System.Windows.Forms;
namespace Sunny.UI namespace Sunny.UI
@ -55,7 +56,7 @@ namespace Sunny.UI
timer = new Timer(); timer = new Timer();
timer.Tick += Timer_Tick; timer.Tick += Timer_Tick;
if (FileEx.Exists(fileName)) if (File.Exists(fileName))
{ {
Image = Image.FromFile(fileName); Image = Image.FromFile(fileName);
} }
@ -115,7 +116,8 @@ namespace Sunny.UI
FrameDimension fd = Image.GifFrameDimension(); FrameDimension fd = Image.GifFrameDimension();
Image.SelectActiveFrame(fd, frameIndex); Image.SelectActiveFrame(fd, frameIndex);
ShowImage.Graphics().DrawImage(Image, 0, 0, Image.Width, Image.Height); using var g = ShowImage.Graphics();
g.DrawImage(Image, 0, 0, Image.Width, Image.Height);
ImageChanged?.Invoke(this, ShowImage); ImageChanged?.Invoke(this, ShowImage);
} }
} }

Some files were not shown because too many files have changed in this diff Show More