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 方法的更多相关文章

  1. 为IEnumerable扩展一个ForEach方法

    IEnumerable没有一个ForEach方法,我们可以使用C#写一个扩展方法: Source Code: using System; using System.Collections.Generi ...

  2. .NET MVC3中扩展一个HtmlHelper方法CheckBoxList

    MVC中有DropDownList方法,挺好用,可是最常用的需求,一组checkboxlist咋没个类似方法呢?郁闷之余,自己做一个吧,直接上代码 public static MvcHtmlStrin ...

  3. 利用jQuery来扩展一个瀑布流插件

      简单了解jQuery.fn.extend() jQuery.fn.extend()函数用于为jQuery扩展一个或多个实例属性和方法(主要用于扩展方法). (截图来自jQuery文档) 为了更清晰 ...

  4. 扩展Unity的方法

    写更少代码的需求 当我们重复写一些繁杂的代码,或C#的一些方法,我们就想能不能有更便捷的方法呢?当然在unity中,我们对它进行扩展. 对unity的类或C#的类进行扩展有以下两点要注意: 1.这个类 ...

  5. Junit4.x扩展:运行指定方法

    相信很多道友搞开发的一般都会用到Junit单元测试工具,不知道大家有没有遇到一个这样的问题: 有的单元测试用例有很多@Test方法,甚至有的方法会执行很长时间,只能空等执行.而实际上我们只需要运行其中 ...

  6. PHP打开PDO_MySQL扩展的配置方法

    PHP中的PDO其实是一个很好用的扩展,在一些PHPCMS系统中,开发者大多都有用到,那么如何开启PDO和PDO_MySQL扩展呢?方法同样很简单: 打开php.ini配置文件,找到extension ...

  7. 在ASP.NET MVC下扩展一个带验证的RadioButtonList

    在ASP.NET MVC4中,HtmlHelper为我们提供了Html.RadioButton()方法用来显示Radio Button单选按钮.如果想显示一组单选按钮,通常的做法是遍历一个集合把每个单 ...

  8. 扩展一个boot的插件—tooltip&做一个基于boot的表达验证

    在线演示 本地下载 (代码太多请查看原文) 加班,加班加班,我爱加班··· 我已经疯了,哦也. 这次发一个刚接触boot的时候用boot做的表单验证,我们扩展一下tooltip的插件,让他可以换颜色. ...

  9. 无需重新编译php加入ftp扩展的解决方法

    无需重新编译php加入ftp扩展的解决方法   本文为大家介绍无需重新编译php加入ftp扩展的方法,有需要的朋友可以参考下   首先,进入源码目录cd php-5.2.13/ext/ftp #运行p ...

  10. [实战]扩展一个定制的sentinel JdbcDataSource

    Sentinel是今年阿里开源的高可用防护的流量管理框架. git地址:https://github.com/alibaba/Sentinel wiki:https://github.com/alib ...

随机推荐

  1. PHP现代化构建工具: 无需修改任何代码和扩展将你的ThinkPHP项目性能提高20倍

    我要分享一个令人激动的黑科技:PRipple 使用这个项目能够在无需修改任何代码且无需第三方扩展的前提下,将你的 Laravel 项目性能提高 20 倍.他仅仅依赖于PHP原生的 pcntl/posi ...

  2. ssh 转发 和 切换图形化

    适用环境 宿主机连接到一台服务器是,服务器系统里面的浏览器点击http网页卡顿,那么这时可以通过ssh将端口转发到宿主机 使用宿主机的浏览器点击,则不会很卡顿. [root@foundation1 ~ ...

  3. 硬件开发笔记(二十九):TPS54331电源设计(二):12V转3.3V和12V转4V原理图设计

    前言   电源供电电路设计很重要,为了更好的给对硬件设计有需求的人,特意将电源设计的基础过程描述出来.  紧接前一篇12V转5V的,本篇设计常用的12V转3.3V电路,不常用的12V转4V电路.   ...

  4. 【Mybatis】09 日志工厂配置 & Log4J

    什么是日志 Log? 系统日志是记录系统中硬件.软件和系统问题的信息,同时还可以监视系统中发生的事件. 用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹. 系统日志包括系统日志. ...

  5. 【Uni-App】API笔记 P1

    1.调试打印: console.log() 向控制台打印 log 日志 console.debug() 向控制台打印 debug 日志 注:App 端自定义组件模式下,debug 方法等同于 log ...

  6. 【Linux】00 Docker下载安装(CentOS8)

    官方安装文档: https://docs.docker.com/engine/install/centos/ 先全部卸载Docker有无关系的一些环境 [保证一个干净的部署环境] sudo yum r ...

  7. NVIDIA的OpenUSD是什么? —— Universal Scene Description (USD)

    正如NVIDIA的老黄在2024年的技术大会上的展示一样,NVIDIA公司或许最准确的定义应该是计算机图形学公司,因为不论是NVIDIA搞GPU还是搞通用计算还是搞软件生态以至于现在搞AI搞机器人搞自 ...

  8. 【转载】 从零开始编写一个简单的Linux文件系统

    版权声明:本文为CSDN博主「shuxiaogd」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/shuxiao ...

  9. MFC的CBitmapButton的使用指南

    注意:此按钮使用前应该将按钮的属性:Owner Draw->True 注意:此按钮使用前应该将按钮的属性:Owner Draw->True 注意:此按钮使用前应该将按钮的属性:Owner ...

  10. ubuntu中sshd_config配置文件不存在

    sshd_config配置文件不存在 导致外部无法连接ssh 解决方案: 1.完全卸载 sudo apt-get remove openssh-server openssh-client --purg ...