前言
在快速迭代的軟件開發(fā)環(huán)境中,如何高效地開發(fā)一個(gè)功能完整、界面美觀的 WinForm 管理系統(tǒng),是許多開發(fā)面臨的現(xiàn)實(shí)問題。
今天推薦一款基于 Ant Design 設(shè)計(jì)語言的 WinForm UI 框架,它通過深度封裝和現(xiàn)代化設(shè)計(jì),徹底改變了傳統(tǒng) WinForm 應(yīng)用的開發(fā)模式。大家無需再為繁瑣的基礎(chǔ)設(shè)施代碼所困擾,只需聚焦核心業(yè)務(wù)邏輯,能夠用極簡(jiǎn)的方式快速搭建企業(yè)級(jí)桌面應(yīng)用。
項(xiàng)目介紹
WenAntdUI 項(xiàng)目的主要模塊及其對(duì)應(yīng)的功能說明,涵蓋了從示例測(cè)試到核心應(yīng)用的各個(gè)組成部分,便于大家了解項(xiàng)目結(jié)構(gòu)和功能分布。
項(xiàng)目結(jié)構(gòu)具體如表所示:
| | |
---|
| gRPC測(cè)試項(xiàng)目(演示示例項(xiàng)目) |
|
| | |
| | |
| 項(xiàng)目測(cè)試功能測(cè)試代碼 |
|
| | 控制臺(tái)AOT測(cè)試代碼(SqlSugarCore) |
| | winform Aot(SqlSugarCore)測(cè)試 |
| WinFormsAppFreeSqlAotTest | |
| | |
| |
|
| | 前后分離服務(wù)器項(xiàng)目(內(nèi)含WebApi和SignalR) |
| | |
| | 中間層,后續(xù)基礎(chǔ)引用功能基本遷移到此處 |
| | |
| | |
內(nèi)部運(yùn)行集成 一行代碼搞定一個(gè)完整的管理系統(tǒng)基礎(chǔ)功能
項(xiàng)目功能
AOT發(fā)布:支持AOT(Ahead-of-Time)編譯發(fā)布,提升應(yīng)用性能。
字典管理:提供增刪改查功能,方便管理系統(tǒng)中的各類字典數(shù)據(jù)。
用戶管理:支持用戶的增刪改查、角色分配和密碼重置。
菜單管理:實(shí)現(xiàn)菜單的增刪改查,支持自定義頁(yè)面控件和樣式。
權(quán)限管理:精細(xì)的權(quán)限控制,確保系統(tǒng)的安全性。
用戶設(shè)置:允許用戶更改密碼和修改圖像,圖像存儲(chǔ)在SQL中。
項(xiàng)目說明
初始化與登錄
首次運(yùn)行WenAntdUI時(shí),它會(huì)自動(dòng)初始化一個(gè)Sqlite數(shù)據(jù)庫(kù),并在運(yùn)行目錄下創(chuàng)建data.db
文件。
可以使用默認(rèn)的登錄賬戶admin
和密碼admin
快速進(jìn)入系統(tǒng),開始體驗(yàn)各項(xiàng)功能。
集成啟動(dòng)方式
應(yīng)用WenAntdUI,可以使用頂級(jí)語言
App.Run();//只需要此代碼即可啟動(dòng)一個(gè)項(xiàng)目
//services 主要是注入服務(wù),將項(xiàng)目控件注入到服務(wù)中。
App.Run(services =>
{
services.AddControlServices(Assembly.GetExecutingAssembly());
});
//AddControlServices 內(nèi)部封裝了Control注入功能,只需要傳遞程序集即可
//很多開發(fā)項(xiàng)目,需要使用注冊(cè)機(jī)功能,也只需要在 App.Run修改,即可一個(gè)完整注冊(cè)機(jī)功能,硬件信息生成唯一注冊(cè)碼
App.Run(services =>
{
services.AddControlServices(Assembly.GetExecutingAssembly());
},true); //此處增加
加密解密
加密解密KEY請(qǐng)自行生成替換 Wen.Core.Helps AesRsaHelp中
public static string RsaFromPem { get; set; } = @"-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxot7LoZAVHZDhlGE8e6/
WqTmgmGZhVepofQhhynB/jTA69lMXoKfcXJMr/8Zyfdug97re7NkJX8Jei4cJlEv
nyzNRrY1tz1+dkrISYi0nBkwaDMTd2Wsw63QjcqZl1yCTVT6jboNR/0a7hyb2gwt
5cXW2ylgVZ6PttOUPXb3ZF8oWLe1BVWfcQXFIlErqVjsY3iFgcNxCucvYhiDzcbm
qHFIbUj9760E666Ws3Io32OQK1EkkdufqNuL1gm9/9qYXE0KChGzetnFfhtOGmvK
cPp3os07zdeeFOdKbwCbZjUxSy2a/6IKvEWilONNPNSMBxcc70oci565CtrIdyah
IQIDAQAB
-----END PUBLIC KEY-----";
public static string AesKey = "u4GP+xHwd3slNDYCVeOvDpbe0eLJz7XpaEj46SA9EtM=";
public static string AesIv = "8Daxh29YSAjUBulFYoMhdw==";
功能集成
內(nèi)部集成了 枚舉,字典等樣式識(shí)別
全局采用注入方式,Page控件可以使用注入方式,直接調(diào)用
[Description("角色管理")] //此處為菜單選擇注釋
publicpartialclassSysRolePage : UserControl
{
privatereadonly IFreeSql fsql;
privatereadonly MenuService menuService;
public SysRolePage(IFreeSql fsql, MenuService menuService)
{
this.fsql = fsql;
this.menuService = menuService;
InitializeComponent();
this.adminTable1.SetColumns<SysRole>();
this.adminTable1.Query();
InitMenuItem();
this.adminTable1.CellClick += AdminTable1_CellClick;
}
}
AdminTable
封裝控件 AdminTable 只需要一行代碼即可實(shí)現(xiàn)一個(gè)表增刪改查
this.adminTable1.SetColumns<SysRole>();
[Index($"index_{nameof(SysRole)}_{nameof(RoleName)}", nameof(RoleName), true)]
publicclassSysRole
{
/// <summary>
/// 獲得/設(shè)置 角色名稱
/// </summary>
[DisplayName("角色名稱")]
[Col] //自動(dòng)編輯功能,需要在屬性上面 加上 Col 特性
[Key]
publicstring? RoleName { get; set; }
/// <summary>
/// 獲得/設(shè)置 角色描述
/// </summary>
[DisplayName("角色描述")]
[Col]
publicstring? Description { get; set; }
}
1、自定義構(gòu)建列
this.adminTable1.SetColumn<SysMenuDto>()
.Add(a => a.Name, 288, c => c.SetTree(nameof(SysMenuDto.Childs)))
.Add(a => a.Code)
.Add(a => a.ParentCode)
.Add(a => a.OrderNo)
.Add(a => a.IconImage)
.Add(a => a.MenuType)
.Add(a => a.Description)
.Add(a => a.ControlType);
2、查詢數(shù)據(jù)
this.adminTable1.QueryData = async e =>
{
e.IsExpand = true;
return fsql.Select<SysMenuDto>()
.WhereIf(!string.IsNullOrWhiteSpace(e.QueryText), a => a.Name.Contains(e.QueryText))
.ToTreeList();
};
this.adminTable1.Query(); //手動(dòng)執(zhí)行查詢
字典管理
增刪改查
菜單管理
增刪改查、頁(yè)面控件、自定義樣式
開發(fā)中無需考慮 new ,可以使用注入方式 ,在構(gòu)造函數(shù)中使用
public partialclassUserControlTestTable : UserControl
{
public UserControlTestTable(IFreeSql fsq1)
{
InitializeComponent();
adminTable1.SetColumns<SysDict>();
}
}
//需要提前注入,若是采用插件方式開發(fā),此處可以調(diào)用外部插件直接注入dll文件
App.Run(services =>
{
services.AddControlServices(Assembly.GetExecutingAssembly());
}, true);
完成注入后即可在菜單選中使用
角色管理
增刪改查、分配權(quán)限
用戶管理
增刪改查、分配角色、重置密碼
用戶信息設(shè)置
更改密碼、修改圖像、圖像存儲(chǔ)在SQL中
封裝組件演示
1、前后端分離增刪改查
2、圖像選擇組件
3、字典選擇組件
4、上傳功能集成組件
5、下載功能集成組件
6、Model編輯組件
7、雙向綁定
8、Auth組件(按鈕權(quán)限)
前后分離通用查詢方式雖然方便,慎用慎用!??!
出于安全考慮,不集成在 AdminTable,若需要使用,只要替換增刪改查代碼即可
1、查詢數(shù)據(jù)
需要需要提供類型 搜索內(nèi)容 頁(yè)碼 單頁(yè)數(shù)
var client = new ApiClient();
var res = await client.GetListAsync(typeof(SysDict), "", true, 1, 5);
this.table1.DataSource = res.Data;
2、更新數(shù)據(jù)
var client = new ApiClient();
var res = client.UpdateObject(item);
await RefreshDataAsync();
3、刪除數(shù)據(jù)
var client = new ApiClient();
var res = client.DeleteObject(item);
await RefreshDataAsync();
4、插入數(shù)據(jù)
var client = new ApiClient();
var res = client.InsertObject(item);
await RefreshDataAsync();
Model編輯組件
使用方式
this.modelEditControl1.GetItemBuilder(value)
.Add(a => a.Color)
.Add(a => a.Name)
.Add(a => a.CreateTime)
.Add(a => a.Image)
//.Add(a => a.Aa)
//.Add(a => a.Name, content: new DictSelect("1"))
.Add(a => a.KK)
.Add(a => a.Dict)
.Add(a => a.KKd)
.Add(a => a.Typ)
.Add(a => a.TestEditControlTest, content: new TestEditControl())
.Add(a => a.Check);
更新數(shù)據(jù)
this.modelEditControl1.Model = obj;
Auth組件(按鈕權(quán)限)
設(shè)計(jì)頁(yè)面拖入 Auth ,然后點(diǎn)擊按鈕,按鈕上就會(huì)多一個(gè)屬性
AdminTable 增刪改 權(quán)限設(shè)置方法
this.auth1.SetAuth(this.adminTable1, "useradmin");
//菜單中請(qǐng)?jiān)O(shè)置權(quán)限 useradmin:edit, useradmin:delete, useradmin:add
項(xiàng)目源碼
Gitee:https://gitee.com/AntdUI/wen-antd-ui
總結(jié)
WenAntdUI框架基于AntdUI,集成了多種實(shí)用功能,通過簡(jiǎn)潔的集成方式和豐富的組件庫(kù),為大家提供了一站式的管理后臺(tái)開發(fā)解決方案。
不管是初始化與登錄、項(xiàng)目結(jié)構(gòu)與啟動(dòng)、數(shù)據(jù)演示與配置,還是功能集成與組件使用,WenAntdUI都表現(xiàn)出了極高的易用性和靈活性。對(duì)于希望快速開發(fā)管理后臺(tái)系統(tǒng)的團(tuán)隊(duì)來說,WenAntdUI無疑是一個(gè)值得嘗試的選擇。
關(guān)鍵詞
#WenAntdUI、#WinForm、#AntdUI、#AdminTable、#權(quán)限管理、#AOT、#gRPC、#SignalR、#SqlSugar、#FreeSql、#AOT編譯支持、#AntDesign風(fēng)格、#SQLite、#AntdUI
閱讀原文:原文鏈接
該文章在 2025/8/4 18:20:10 編輯過