为 AntdUI 扩展一个 MessageBox 方法
AntdUI是个很不错的开源 WinFrom 界面组件,使用中感觉消息对话框调用有点麻烦,于是按照 MessageBox.Show 的使用习惯,增加了一个扩展方法来调用,废话不多说,直接上代码。
1 using System.Windows.Forms;
2
3 namespace AntdUI
4 {
5 public static class WindowExtentions
6 {
7 /// <summary>
8 /// 仿照 System.Window.Forms.MessageBox.Show() 简化对话框弹窗
9 /// </summary>
10 /// <param name="owner"></param>
11 /// <param name="message"></param>
12 /// <param name="title"></param>
13 /// <param name="buttons"></param>
14 /// <param name="icon"></param>
15 /// <param name="closeButton"></param>
16 /// <returns></returns>
17 public static DialogResult MessageBox(this Window owner, string message,
18 string title = "",
19 MessageBoxButtons buttons = MessageBoxButtons.OK,
20 MessageBoxIcon icon = MessageBoxIcon.None,
21 bool closeButton = true)
22 {
23 var modalCfg = new Modal.Config(form: owner, title: title, content: message);
24 //modalCfg.CloseIcon = true; // 始终返回 No 禁用
25 modalCfg.Btns = createButtons(buttons, modalCfg);
26 modalCfg.Icon = createIcon(icon);
27
28 var ret = DialogResult.OK;
29 //modalCfg.OnOk = config =>
30 //{
31 // return true;
32 //};
33
34 modalCfg.OkType = TTypeMini.Primary;
35 modalCfg.OnBtns = btn =>
36 {
37 switch (btn.Name)
38 {
39 case "No": ret = DialogResult.No; break;
40 case "Cancel": ret = DialogResult.Cancel; break;
41 case "Retry": ret = DialogResult.Retry; break;
42 case "Abort": ret = DialogResult.Abort; break;
43 case "Ignore": ret = DialogResult.Ignore; break;
44 #if NET5_0_OR_GREATER
45 case "Continue": ret = DialogResult.Continue; break;
46 #endif
47 default: ret = DialogResult.OK; break;
48 }
49 };
50
51 if (Modal.open(modalCfg) == DialogResult.OK)
52 switch (modalCfg.OkText)
53 {
54 case "是":
55 ret = DialogResult.Yes; break;
56 case "重试":
57 ret = DialogResult.Retry; break;
58 case "放弃":
59 ret = DialogResult.Abort; break;
60 case "确定":
61 default:
62 ret = DialogResult.OK; break;
63 }
64 return ret;
65 }
66
67 private static Modal.Btn[] createButtons(MessageBoxButtons b, Modal.Config cfg)
68 {
69 cfg.CancelText = null; //禁用自带的取消按钮
70 switch (b)
71 {
72 case MessageBoxButtons.OKCancel:
73 return new Modal.Btn[] { new Modal.Btn("Cancel", "取消")};
74 case MessageBoxButtons.YesNo:
75 cfg.OkText = "是";
76 return new Modal.Btn[] { new Modal.Btn("No", "否") };
77 case MessageBoxButtons.YesNoCancel:
78 cfg.OkText = "是";
79 return new Modal.Btn[] {
80 new Modal.Btn("No", "否"),
81 new Modal.Btn("Cancel", "取消")
82 };
83 case MessageBoxButtons.RetryCancel:
84 cfg.OkText = "重试";
85 return new Modal.Btn[] { new Modal.Btn("Cancel", "取消") };
86 case MessageBoxButtons.AbortRetryIgnore:
87 cfg.OkText = "放弃";
88 return new Modal.Btn[] {
89 new Modal.Btn("Retry", "重试"),
90 new Modal.Btn("Ignore", "忽略")
91 };
92 #if NET5_0_OR_GREATER
93 case MessageBoxButtons.CancelTryContinue:
94 cfg.OkText = "重试";
95 return new Modal.Btn[] {
96 new Modal.Btn("Cancel", "取消"),
97 new Modal.Btn("Continue", "继续")
98 };
99 #endif
100 case MessageBoxButtons.OK:
101 default:
102 return new Modal.Btn[] {};
103 }
104 }
105
106 private static TType createIcon(MessageBoxIcon icon)
107 {
108 switch (icon)
109 {
110 case MessageBoxIcon.Information:
111 return TType.Success;
112 case MessageBoxIcon.Exclamation:
113 return TType.Warn;
114 case MessageBoxIcon.Stop:
115 return TType.Error;
116 case MessageBoxIcon.Question:
117 return TType.Info;
118 case MessageBoxIcon.None:
119 default:
120 return TType.None;
121 }
122 }
123 }
124 }
本想着去提个PR,可又觉得没什么技术含量,有用得上的就自取吧。
为 AntdUI 扩展一个 MessageBox 方法的更多相关文章
- 为IEnumerable扩展一个ForEach方法
IEnumerable没有一个ForEach方法,我们可以使用C#写一个扩展方法: Source Code: using System; using System.Collections.Generi ...
- .NET MVC3中扩展一个HtmlHelper方法CheckBoxList
MVC中有DropDownList方法,挺好用,可是最常用的需求,一组checkboxlist咋没个类似方法呢?郁闷之余,自己做一个吧,直接上代码 public static MvcHtmlStrin ...
- 利用jQuery来扩展一个瀑布流插件
简单了解jQuery.fn.extend() jQuery.fn.extend()函数用于为jQuery扩展一个或多个实例属性和方法(主要用于扩展方法). (截图来自jQuery文档) 为了更清晰 ...
- 扩展Unity的方法
写更少代码的需求 当我们重复写一些繁杂的代码,或C#的一些方法,我们就想能不能有更便捷的方法呢?当然在unity中,我们对它进行扩展. 对unity的类或C#的类进行扩展有以下两点要注意: 1.这个类 ...
- Junit4.x扩展:运行指定方法
相信很多道友搞开发的一般都会用到Junit单元测试工具,不知道大家有没有遇到一个这样的问题: 有的单元测试用例有很多@Test方法,甚至有的方法会执行很长时间,只能空等执行.而实际上我们只需要运行其中 ...
- PHP打开PDO_MySQL扩展的配置方法
PHP中的PDO其实是一个很好用的扩展,在一些PHPCMS系统中,开发者大多都有用到,那么如何开启PDO和PDO_MySQL扩展呢?方法同样很简单: 打开php.ini配置文件,找到extension ...
- 在ASP.NET MVC下扩展一个带验证的RadioButtonList
在ASP.NET MVC4中,HtmlHelper为我们提供了Html.RadioButton()方法用来显示Radio Button单选按钮.如果想显示一组单选按钮,通常的做法是遍历一个集合把每个单 ...
- 扩展一个boot的插件—tooltip&做一个基于boot的表达验证
在线演示 本地下载 (代码太多请查看原文) 加班,加班加班,我爱加班··· 我已经疯了,哦也. 这次发一个刚接触boot的时候用boot做的表单验证,我们扩展一下tooltip的插件,让他可以换颜色. ...
- 无需重新编译php加入ftp扩展的解决方法
无需重新编译php加入ftp扩展的解决方法 本文为大家介绍无需重新编译php加入ftp扩展的方法,有需要的朋友可以参考下 首先,进入源码目录cd php-5.2.13/ext/ftp #运行p ...
- [实战]扩展一个定制的sentinel JdbcDataSource
Sentinel是今年阿里开源的高可用防护的流量管理框架. git地址:https://github.com/alibaba/Sentinel wiki:https://github.com/alib ...
随机推荐
- linux部署Python UI自动化项目过程
1.安装chrome浏览器 下载 访问谷歌中文网站:Google Chrome 网络浏览器. 将页面滑到最下面,点击其他平台, 在弹出的页面选择linux 选择对应的系统版本进行下载. 下载后的deb ...
- ArcGIS for Android入门(Java):初体验
准备工作 开发工具:Android Studio 环境:jdk 11 (首次接触安卓开发,可能有的地方不太对,还请给位大佬多多指点) 项目搭建 打开Android Studio,点击New Proje ...
- 【Java】JDBC Part2 工具类封装实现
JDBC 工具类封装实现 - 注册和配置都放在静态代码块完成 - 静态方法获取连接,和释放资源 - 本类不产生实例 - 5版本 + 已经可以实现无驱动注册,所以驱动部分注释了 package cn.d ...
- 【Tool】常用软件地址(装机备用)
浏览器: 360极速 https://browser.360.cn/ee/ 谷歌 https://www.google.cn/chrome/ 社交通讯 微信 https://weixin.qq.com ...
- 【DataBase】SQL优化问题
在DAO层的动态SQL: //订单新增,查询配件主数据 @SuppressWarnings("rawtypes") public PageInfoDto getPartsForPa ...
- 【Vue】13 VueRouter Part3 路由守卫
单页应用中,只存在一个HTML文件,网页的标签,是通过title标签显示的,我们在单页应用中如何修改? JS操作: window.document.title = "标签名称" 也 ...
- 【转载】 vscode如何在最新版本中配置c/c++语言环境中的launch.json和tasks.json?
作者:来知晓链接:https://www.zhihu.com/question/336266287/answer/2144611720来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- 读《PyTorch + NumPy这么做会降低模型准确率,这是bug还是预期功能?》
看了文章: [转载] 浅谈PyTorch的可重复性问题(如何使实验结果可复现) 然后,转到: PyTorch + NumPy这么做会降低模型准确率,这是bug还是预期功能? 发现了在pytorch中的 ...
- 报错 qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found
参考: https://blog.csdn.net/qq_39938666/article/details/120452028 ==================================== ...
- 跨越时空的对话:如何使用AI阅读工具ChatDOC快速建立数字化身?
跨越时空的对话:如何使用 ChatDOC 快速建立数字化身?以史蒂夫·乔布斯 AI 为例 开门见山,这篇文章主要介绍如何将 AI 改造为靠谱.好用.基于某个人物的数字化身.比如,乔布斯 AI.马斯克 ...