前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。
項目介紹
基於 .NET Framework 4.0,採用原生控制項開發,參考 Element 主題風格,包含超過 70 個常用控制項,如按鈕、編輯框、下拉框、數據表格、工控儀錶和統計圖表,滿足常規開發需求,每個控制項都精心設計,註重細節。
提供 11 個 Element 風格主題和 6 個其他主題,支持多彩主題模式自定義。包含主題管理組件 UIStyleManager,可自由切換主題。
項目架構
控制項庫擁有不同的主題、字體和語言、包括了常見的組件Button、Label、CheckBox、TreeView和TabControl、對話框、進度條、消息提示,提供了擴展庫和工具庫,方便我們開發和使用,具體如下圖所示:
項目環境
1、源碼編譯環境
VS 2022,安裝.NET Framework 4.0 目標包
編譯源碼,.NET 8 需要 VS 2022 17.8+ 版本,或者修改 SunnyUI.csproj 文件的 TargetFrameworks 屬性以適應 VS 環境
2、動態庫應用環境
VS 2010 及以上均可,支持.NET Framework 4.0+、.NET 6、.NET 7
推薦通過 Nuget 安裝
PM->Install-Package SunnyUI
或者通過 Nuget 搜索 SunnyUI 安裝,不支持(.NET Framework 4 Client Profile)。
項目展示
1、主題
SunnyUI為了避免視覺傳達差異,使用一套特定的調色板來規定顏色,為你所搭建的產品提供一致的外觀視覺感受。
主要顏色參照Element(
主色
SunnyUI主要品牌顏色是鮮艷、友好的藍色。
Style主題
SunnyUI包含 Element 風格主題 11 個,DotNetBar 主題 3 個,其他主題 2 個,包含主題管理組件 UIStyleManager,可自由切換主題。
UIStyle.Blue
UIStyle.Purple
2、國際化
SunnyUI 控制項內部預設使用中文,若希望使用其他語言,則需要進行多語言設置。
本頁面所描述的國際化是針對SunnyUI內的按鈕、標題等中文資源的國際化,如您開發的系統需要做國際化請自行開發。
常用的按鈕、標題、提示等文字已經設置為靜態字元串變數,存於ULocalize.cs文件中。
public static class UILocalize { public static string InfoTitle = "提示"; public static string SuccessTitle = "正確"; public static string WarningTitle = "警告"; public static string ErrorTitle = "錯誤"; public static string AskTitle = "提示"; public static string InputTitle = "輸入"; public static string CloseAll = "全部關閉"; public static string OK = "確定"; public static string Cancel = "取消"; public static string GridNoData = "[ 無數據 ]"; public static string GridDataLoading = "數據載入中 ......"; public static string GridDataSourceException = "數據源必須為DataTable或者List"; }
可以重寫UILocalize類靜態變數值來改變語言。
UILocalizeHelper類已經包含中文和英文的預設配置函數:
public static class UILocalizeHelper { public static void SetEN() { UILocalize.InfoTitle = "Info"; UILocalize.SuccessTitle = "Success"; UILocalize.WarningTitle = "Warning"; UILocalize.ErrorTitle = "Error"; UILocalize.AskTitle = "Query"; UILocalize.InputTitle = "Input"; UILocalize.CloseAll = "Close all"; UILocalize.OK = "OK"; UILocalize.Cancel = "Cancel"; UILocalize.GridNoData = "[ No data ]"; UILocalize.GridDataLoading = "Data loading ......"; UILocalize.GridDataSourceException = "The data source must be DataTable or List"; } public static void SetCH() { UILocalize.InfoTitle = "提示"; UILocalize.SuccessTitle = "正確"; UILocalize.WarningTitle = "警告"; UILocalize.ErrorTitle = "錯誤"; UILocalize.AskTitle = "提示"; UILocalize.InputTitle = "輸入"; UILocalize.CloseAll = "全部關閉"; UILocalize.OK = "確定"; UILocalize.Cancel = "取消"; UILocalize.GridNoData = "[ 無數據 ]"; UILocalize.GridDataLoading = "數據載入中 ......"; UILocalize.GridDataSourceException = "數據源必須為DataTable或者List"; } }
如需要其他語言,則在自己程式里寫函數更新UILocalize類靜態變數值即可。
中英文效果展示:
3、字體圖標
SunnyUI的字體圖標目前主要有兩個:
FontAwesome
https://github.com/FortAwesome/Font-Awesome
ElegantIcons.ttf V1.0
https://www.elegantthemes.com/blog/resources/elegant-icon-font
這兩個都是目前 Web 開發常用的字體圖標,SunnyUI經過精心研發,將他們用於.NET Winform開發,省去了到處找圖標的麻煩。
SunnyUI 常用字體圖標的控制項為 UISymbolButton 和 UISymbolLabel
字體圖標的選擇方法是設置UISymbolButton和UISymbolLabel的以下屬性
Symbol:字體圖標(int)
SymbolSize:字體圖標的大小(int)
4、控制項庫
常用的各類組件都有,具體內容可以下載源碼學習。
5、窗體
UIForm 常用的窗體基類
UILoginForm:登錄窗體基類
6、多頁面框架
SunnyUI多頁面框架由框架和頁面構成。最基本的實現是框架(IFrame)由UIForm實現,頁面由(UIPage)實現。
在UIForm放置一個UITabControl,將多個UIPage放置於UIForm的UITabControl的TabPage內。
通過PageIndex(正整數,唯一)進行頁面的關聯和切換。
聽起來有點複雜,其實主要就IFrame介面的三個函數:AddPage,ExistPage,SelectPage。
7、工具類庫
簡易的 Json 靜態類庫,可以在不引用 NewtonJson 即可簡單處理 Json 對象。當然如果有複雜需求,第三方庫還是推薦NewtonJson。另外在.NET 5,System.Text.Json的性能已經非常不錯了,也可以嘗試。
項目地址
GitHub:https://github.com/yhuse/SunnyUI
Gitee:https://gitee.com/yhuse/SunnyUI
幫助文檔:https://gitee.com/yhuse/SunnyUI/wikis/pages
如果你覺得這篇文章對你有幫助,不妨點個贊支持一下!你的支持是我繼續分享知識的動力。如果有任何疑問或需要進一步的幫助,歡迎隨時留言。
也可以加入微信公眾號[DotNet技術匠] 社區,與其他熱愛技術的同行一起交流心得,共同成長!優秀是一種習慣,歡迎大家留言學習!