一行代码快速开发 AntdUI 风格的 WinForm 通用后台框架

news/2025/10/31 10:40:54/文章来源:https://www.cnblogs.com/1312mn/p/19011005

前言

在快速迭代的软件开发环境中,如何高效地开发一个功能完整、界面美观的 WinForm 管理系统,是许多开发者面临的现实问题。今天推荐一款基于 Ant Design 设计语言的 WinForm UI 框架,它通过深度封装和现代化设计,彻底改变了传统 WinForm 应用的开发模式。大家无需再为繁琐的基础设施代码所困扰,只需聚焦核心业务逻辑,能够用极简的方式快速搭建企业级桌面应用。

项目介绍

WenAntdUI 项目的主要模块及其对应的功能说明,涵盖了从示例测试到核心应用的各个组成部分,便于大家了解项目结构和功能分布。

项目结构具体如表所示:

内部运行集成:一行代码搞定一个完整的管理系统基础功能

项目功能

AOT发布:支持AOT(Ahead-of-Time)编译发布,提升应用性能。

字典管理:提供增删改查功能,方便管理系统中的各类字典数据。

用户管理:支持用户的增删改查、角色分配和密码重置。

菜单管理:实现菜单的增删改查,支持自定义页面控件和样式。

权限管理:精细的权限控制,确保系统的安全性。

用户设置:允许用户更改密码和修改图像,图像存储在SQL中。

项目说明

初次运行与登录

首次运行WenAntdUI时,它会自动初始化一个Sqlite数据库,并在运行目录下创建data.db文件。可以使用默认的登录账户admin和密码admin快速进入系统,开始体验各项功能。

集成启动方式

应用WenAntdUI,可以使用顶级语句:

App.Run(); // 只需要此代码即可启动一个项目// services 主要是注入服务,将项目控件注入到服务中。
App.Run(services =>
{services.AddControlServices(Assembly.GetExecutingAssembly());
});
// AddControlServices 内部封装了Control注入功能,只需要传递程序集即可
// 很多开发项目,需要使用注册机功能,也只需要在 App.Run修改,即可拥有一个完整的注册机功能,硬件信息生成唯一注册码
App.Run(services =>
{services.AddControlServices(Assembly.GetExecutingAssembly());
}, true); // 此处增加参数

加密解密

加密解密KEY请自行生成替换 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==";

功能集成

内部集成了枚举、字典等样式识别,全局采用注入方式。Page控件可以使用注入方式,直接调用:

[Description("角色管理")] // 此处为菜单选择注释
public partial class SysRolePage : UserControl
{private readonly IFreeSql fsql;private readonly 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 只需要一行代码即可实现一个表的增删改查。

this.adminTable1.SetColumns<SysRole>();[Index($"index_{nameof(SysRole)}_{nameof(RoleName)}", nameof(RoleName), true)]
public class SysRole
{/// <summary>/// 获得/设置 角色名称/// </summary>[DisplayName("角色名称")][Col] // 自动编辑功能,需要在属性上面加上 Col 特性[Key]public string? RoleName { get; set; }/// <summary>/// 获得/设置 角色描述/// </summary>[DisplayName("角色描述")][Col]public string? Description { get; set; }
}

1、自定义构建列

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、查询数据

this.adminTable1.QueryData = async e =>
{e.IsExpand = true;return await fsql.Select<SysMenuDto>().WhereIf(!string.IsNullOrWhiteSpace(e.QueryText), a => a.Name.Contains(e.QueryText)).ToTreeList();
};
this.adminTable1.Query(); // 手动执行查询

字典管理

支持增删改查操作。

菜单管理

支持增删改查、页面控件、自定义样式。开发中无需考虑 new,可以使用注入方式,在构造函数中使用:

public partial class UserControlTestTable : UserControl
{public UserControlTestTable(IFreeSql fsq1){InitializeComponent();adminTable1.SetColumns<SysDict>();}
}
// 需要提前注入,若是采用插件方式开发,此处可以调用外部插件直接注入dll文件
App.Run(services =>
{services.AddControlServices(Assembly.GetExecutingAssembly());
}, true);

完成注入后即可在菜单中选中使用。

角色管理

支持增删改查及权限分配。

用户管理

支持增删改查、角色分配、密码重置。

用户信息设置

支持更改密码、修改图像,图像存储在SQL中。

封装组件演示

1、前后端分离增删改查

2、图像选择组件

3、字典选择组件

4、上传功能集成组件

5、下载功能集成组件

6、Model编辑组件

7、双向绑定

8、Auth组件(按钮权限)

注意:前后分离通用查询方式虽然方便,但出于安全考虑,不集成在 AdminTable。若需要使用,只要替换增删改查代码即可。

1、查询数据

需要提供类型、搜索内容、页码、单页数:

var client = new ApiClient();
var res = await client.GetListAsync(typeof(SysDict), "", true, 1, 5);
this.table1.DataSource = res.Data;

2、更新数据

var client = new ApiClient();
var res = client.UpdateObject(item);
await RefreshDataAsync();

3、删除数据

var client = new ApiClient();
var res = client.DeleteObject(item);
await RefreshDataAsync();

4、插入数据

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.KK).Add(a => a.Dict).Add(a => a.KKd).Add(a => a.Typ).Add(a => a.TestEditControlTest, content: new TestEditControl()).Add(a => a.Check);

更新数据:

this.modelEditControl1.Model = obj;

Auth组件(按钮权限)

在设计页面拖入 Auth 控件,然后点击按钮,按钮上就会多一个权限属性。

AdminTable 增删改权限设置方法:

this.auth1.SetAuth(this.adminTable1, "useradmin");
// 菜单中请设置权限 useradmin:edit,useradmin:delete,useradmin:add

项目源码

Gitee:https://gitee.com/AntdUI/wen-antd-ui

总结

WenAntdUI框架基于AntdUI,集成了多种实用功能,通过简洁的集成方式和丰富的组件库,为开发者提供了一站式的管理后台开发解决方案。不管是初始化与登录、项目结构与启动、数据演示与配置,还是功能集成与组件使用,WenAntdUI都表现出了极高的易用性和灵活性。对于希望快速开发管理后台系统的团队来说,WenAntdUI无疑是一个值得尝试的选择。

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年优质的网带炉厂家选购指南与推荐

2025年优质的网带炉厂家选购指南与推荐网带炉选购概述在2025年的工业制造领域,网带炉作为热处理设备的重要组成部分,其性能和质量直接关系到生产效率和产品质量。随着工业4.0技术的深入发展,智能化、节能环保、高精…

2025年耐用的别墅电梯行业内口碑厂家排行榜

2025年耐用的别墅电梯行业内口碑厂家排行榜随着城市化进程的加快和人们对生活品质要求的提高,别墅电梯已成为高端住宅的标配。2025年,别墅电梯行业迎来了新一轮的技术革新和市场洗牌,消费者在选择电梯产品时更加注重…

ui设计公司审美积累 | 扁平化app界面设计

ui设计公司审美积累 | 扁平化app界面设计扁平化设计核心特征:界面整体简洁明了,去除了多余的装饰元素,如阴影、纹理等。色彩运用上,以白色、浅灰等纯色为基底,搭配少量高饱和度的辅助色,如蓝色、橙色等,形成鲜明…

飞牛os初体验

飞牛os初体验Posted on 2025-10-31 10:35 kacoro 阅读(0) 评论(0) 收藏 举报 nas的需求一直都有,而飞牛的简单易用,其实是pve可能更适合,但是最好还是有集显或者双显卡的机器使用。以后再考虑装吧。 直接再hy…

2025 年钢球厂家最新推荐榜:技术实力与市场口碑深度解析,筛选优质服务商420 不锈钢球 / 304 不锈钢球 / 316L 不锈钢球制造商推荐

引言 随着轴承制造、汽车配件、精密仪器等行业的快速发展,钢球市场需求持续增长,但市场上产品质量参差不齐,企业采购时难以精准辨别优质服务商。为解决这一问题,本次推荐榜由机械工业金属制品协会联合行业专家团队…

2025年正规的学校宿舍铁床厂家推荐及采购指南

2025年正规的学校宿舍铁床厂家推荐及采购指南引言随着教育事业的蓬勃发展和企事业单位对员工住宿条件的日益重视,学校宿舍铁床作为基础配套设施,其质量与安全性越来越受到关注。2025年,市场上涌现出一批专业从事宿舍…

2025年短视频运营公司推荐:行业五大短视频公司深度解析

短视频运营在当今数字化时代的重要性不言而喻,企业要想在竞争激烈的市场中脱颖而出,选择一家专业的短视频运营公司至关重要。以下为您推荐五家的短视频运营公司。 TOP1推荐:南方网通佛山分公司 评价指数:★★★★★…

2025年知名的五星酒店家具厂家最新用户好评榜

2025年知名的五星酒店家具厂家最新用户好评榜在高端酒店行业,家具的品质与设计直接影响着宾客体验和酒店整体形象。随着2025年酒店业的全面复苏与升级,五星级酒店对家具供应商的要求更加严苛,不仅需要卓越的产品质量…

2025 年广告喷绘公司最新推荐榜:优质企业实力解析与选择指南墙体广告喷绘广告牌 / 墙面广告喷绘 / 手绘广告喷绘推荐

引言 随着商业视觉传播需求的持续增长,广告喷绘行业规模逐年扩大,据广告协会 2024 年度行业报告显示,国内广告喷绘市场规模已突破 800 亿元,年增长率达 12.3%。然而,市场中仍存在资质混杂、工艺参差不齐的问题,超…

2025年正规的玻璃淋浴房配件品牌厂家排行榜

2025年正规的玻璃淋浴房配件品牌厂家排行榜 随着家居装修品质要求的不断提升,玻璃淋浴房作为现代卫浴空间的重要组成部分,其配件的质量直接影响使用体验和安全性。优质的淋浴房配件不仅需要具备出色的耐用性和顺滑度…

Python 格式化字符串 _ 优雅群发春节短信

Python 格式化字符串 _ 优雅群发春节短信gpa_dict = {}#字典增加key:valuegpa_dict.setdefault("A", 10.2)gpa_dict.setdefault("B", 30.315)gpa_dict.setdefault("C", 20.45)gpa_dict…

2025年升压充电芯片供货厂家权威推荐榜单:升降压充电管理IC/超级电容充电/开关型充电管理IC源头厂家精选

随着便携式电子设备与新能源产业的快速发展,升压充电芯片作为高效能电源管理的核心组件,其市场需求持续增长。行业数据显示,2024年中国电源管理芯片市场规模已突破1200亿元,其中升压充电芯片占比达28%,年均增长率…

2025年财税咨询会计公司:专业选择与企业成长指南

文章摘要 本文探讨2025年财税咨询会计公司的发展趋势,重点分析如何选择靠谱的服务提供商。基于行业数据和客户案例,强调专业团队、三对一服务和全面业务范围的重要性,并以临沂华恒企业管理有限公司为例,展示其资质…

2025年财税咨询会计公司:趋势、选择与临沂华恒的专业服务

文章摘要 本文探讨2025年财税咨询会计行业的发展趋势,包括数字化转型和合规要求提升,并提供选择靠谱公司的实用指南。重点推荐临沂华恒企业管理有限公司,其拥有财政局授权资质、专业会计团队和三对一服务,一站式解…

2025年口碑好的2000a母线槽多少钱一米品牌厂家排行榜

2025年口碑好的2000A母线槽多少钱一米品牌厂家排行榜母线槽行业概述随着我国电力基础设施建设的不断推进和工业自动化水平的持续提升,母线槽作为现代电力传输系统的重要组成部分,市场需求呈现稳定增长态势。2025年,…

2025 年夹丝玻璃厂家最新推荐榜,技术实力与市场口碑深度解析覆盖防火 / 艺术 / 酒店等多场景

引言 2025 年夹丝玻璃市场需求持续攀升,安防领域需求预计达 46 亿元,但行业仍存在资质混杂、品质参差等问题。为精准筛选优质厂商,本次推荐榜联合建筑玻璃与工业玻璃协会开展专项测评,采用 “三维九维” 评估体系:…

2025年国标电缆生产厂家权威推荐榜单:平方电缆/电缆规格 /电线电缆十大品牌源头厂家精选

在“双碳”战略与新型电力系统建设的推动下,2025年中国电线电缆行业市场规模已突破数千亿元,其中高质量国标产品需求同比增长超15%。行业正从“量大”向“质强”加速转型。 为帮助工程项目方、采购商及合作伙伴精准筛…

2025年可靠的烤漆龙骨热门厂家推荐榜单

2025年可靠的烤漆龙骨热门厂家推荐榜单 烤漆龙骨作为现代建筑吊顶和隔墙系统的核心材料,其质量直接影响工程的安全性与美观度。随着建筑行业对环保、精度和耐用性要求的提升,选择一家技术成熟、口碑可靠的烤漆龙骨生…

2025年评价高的矿物质防火电缆TOP品牌厂家排行榜

2025年评价高的矿物质防火电缆TOP品牌厂家排行榜 矿物质防火电缆因其卓越的耐火性能、高安全性和环保特性,在电力工程、建筑消防、轨道交通等领域广泛应用。随着市场对安全性能要求的提升,矿物质防火电缆的需求持续…

JOIST2025 传统题记录

D1T1 Exhibition 3 一个贪心的想法是从大到小考虑所有值,每次加入最靠前的线段判断是否可行。那么要解决的问题就是用尽量少的点覆盖选中的区间。 设当前值 \(v\),有 \(cnt_v\) 个。考虑怎么判断一个新的区间可以加入…