查看: 234|回复: 1

C# WinForm开源框架SunnyUI.Net 3.7.2更新:控件优化与多页面框架实践

[复制链接]
发表于 昨天 17:00 | 显示全部楼层 |阅读模式
SunnyUI.Net 是一款面向 .NET 平台(支持 .Net Framework 4.0+、.Net Core 3.1、.Net 5)的 C# WinForm 开源项目,集成了超过 70 个常用控件、工具类库、扩展类库以及多页面开发框架。其源码编译推荐使用 VS2019 16.8+ 与 .NET 5 或 .NET Core 3.1,而动态库可直接应用于 VS2010 及以上环境(需 .NET Framework 4.0+,不包括 Client Profile)、.NET Core 3.1 或 .NET 5.0。推荐通过 NuGet 安装:在程序包管理器控制台执行 Install-Package SunnyUI,或直接在 NuGet 搜索 SunnyUI。

## 框架核心特性

1.  **开源控件库**:基于 .NET Framework 4.0 原生控件开发,参考 Element 主题风格。包含按钮、编辑框、下拉框、数据表格、工控仪表、统计图表等常用控件,满足常规 WinForm 开发需求。内置 11 个 Element 风格主题和 6 个其他主题,支持通过 UIStyleManager 组件动态切换主题,也可自定义多彩主题。
2.  **工具库与扩展库**:收集并整理了开发中常用的工具类和扩展方法,减少重复造轮子。
3.  **多页面框架**:参考 Element 设计,提供 7 种常用框架风格。只需几行代码即可创建多页面程序,核心支撑组件包括 UIForm、UIPage、UIFrame,结合控件库能快速构建 WinForm 应用。

**授权说明**:个人学习交流免费;商业应用(包括个人接外包、个人开发商业项目、公司内部使用等)需要获得授权。

## v3.7.2 版本更新要点与代码实践

此版本在 UI 细节、加载逻辑、属性编辑器以及控件行为上做了多项优化。以下提炼关键更新及对应的开发实践建议:

### 1. 加载逻辑优化:UIForm 与 UITabControl
- 优化了 UIPage 的 Init 和 Final 加载逻辑,确保页面初始化与销毁更可控。
- UIForm 在调用 RemovePage 时主动触发 Final 方法,避免资源泄漏。

实践提示:如果你的多页面应用中切换或移除页面时遇到未释放资源的问题,可以升级到此版本,或参考以下逻辑手动调用 Final:
  1. // 示例:移除页面时手动触发 Final
  2. UIPage page = uiForm.GetPage("PageName");
  3. if (page != null)
  4. {
  5.     page.Final();
  6.     uiForm.RemovePage(page);
  7. }
复制代码

### 2. 控件修复与增强
- **UIButton**:修复 LightStyle 背景颜色不生效的问题。
- **UITextBox 与 UIDropControl**:修复高度不随字体改变而自适应的问题。
- **UIRichTextBox 与 UITextBox**:增加 Text 属性编辑器,方便设计时直接编辑文本内容。
- **UIComboBox**:新增下拉界面滚动条设置,可调整滚动条样式。
- **UITreeView**:增加可修改滚动条颜色的属性,便于统一主题。
- **UIIntegerUpDown / UIDoubleUpDown**:修复设置 Style 时按钮颜色不一致的 Bug。

### 3. 新功能:ShowStatusForm 支持进度值设置
增加了 SetProgress 方法,可动态更新状态窗体的进度值,适用于长时间操作的反馈:
  1. // 创建并显示状态窗体
  2. ShowStatusForm statusForm = new ShowStatusForm();
  3. statusForm.Show(this);
  4. // 更新进度
  5. statusForm.SetProgress(50);
  6. // 完成后关闭
  7. statusForm.Close();
复制代码

### 4. UIPage AfterShow 事件位置调整
AfterShow 事件触发时机被重新调整,确保在页面真正显示后才触发,避免在初始化过程中误操作。如果你的代码依赖此事件,请注意测试新版逻辑。

### 5. 字体图标支持
Demo 中增加了字体图标界面,方便开发者查看和选取图标。实际使用时,可通过 UISymbolButton 等控件直接引用图标字体。

## 升级建议
- 若从旧版本升级,注意 UITextBox 和 UIDropControl 的高度自适应改动,可能需要重新检查设计时布局。
- 建议使用 NuGet 更新到最新版:
  1. Install-Package SunnyUI -Version 3.7.2
复制代码
- 多页面框架的用户应重点测试页面切换逻辑,确保 Init/Final 事件按预期执行。

SunnyUI.Net 在保持轻量级的同时提供了接近 Element 风格的界面能力,适合需要快速构建美观 WinForm 应用的 .NET 开发者。v3.7.2 版本进一步提升了控件的稳定性和一致性,值得升级体验。
回复

使用道具 举报

发表于 昨天 17:10 | 显示全部楼层

Re: C# WinForm开源框架SunnyUI.Net 3.7.2更新:控件优化与多页面框架实践

感谢分享!SunnyUI.Net 一直是我比较关注的 WinForm 框架,这套更新日志写得很清晰,特别是加载逻辑优化和 ShowStatusForm 的进度支持,对实际开发很有帮助。之前用旧版本时确实遇到过移除页面后资源没释放的坑,升级到 3.7.2 后再配合你给出的手动 Final 示例,应该能稳妥解决。另外 UIComboBox 滚动条和 UITreeView 颜色属性的增强也很实用,做深色主题时更方便统一风格了。准备抽空按你的升级建议更新 NuGet 包,重点测试一下页面的 Init/Final 时序。感谢楼主整理!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-10 01:52 , Processed in 0.028741 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部