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. vue table表格实现无缝滚动 鼠标进入可悬停

    <el-table ref="table" :data="tableData" :header-cell-style="{background: ...

  2. [春秋云镜] Initial

    [春秋云镜] Initial **整套网络环境拓扑:** ​​ 一.打进内网 开局一个ip:39.101.184.25,fscan扫一下 ​​ 存在thinkphp5.0.23的漏洞,可以rce,我们 ...

  3. keycloak~为微信二维码添加动态kc认可的动态state

    本实例将通过keycloak社区登录实现微信二维码的登录,并且二微码不是keycloak动态生成,而是通过微信提供的js生成的,在页面上直接输出的方式实现的. 动态state 在Keycloak中使用 ...

  4. ArcGIS for Android入门(Java):ViewPage + Fragment 底部导航栏添加地图

    修改为ViewPage + Fragment 可以参考里面runoob的教程:我也是参考这个修改的:这前面的网上都有很多相应的教程,我觉得这一部分的难点主要是在Fragment里面加载地图: 在fra ...

  5. 【Mybatis-Plus】制作逆向工具

    官方文档可参考: https://baomidou.com/pages/779a6e/#快速入门 工具需要的依赖 <?xml version="1.0"?> <p ...

  6. 【MongoDB】Re02 文档CRUD

    三.文档操作(行记录) 不管comment集合是否存在,直接在comment集合中创建一份文档 > db.comment.insert({"articleid":" ...

  7. 【RabbitMQ】02 工作队列模式

    首先编写一个工作队列的生产者: 发送10条消息然后就关闭,10条消息让RabbitMQ先存着 import com.rabbitmq.client.Channel; import com.rabbit ...

  8. 强化学习算法:Learning to Learn: Meta-Critic Networks for Sample Efficient Learning

    地址: https://arxiv.org/pdf/1706.09529 作者提出了一种叫做Meta-Critic的框架,该框架可以用于强化学习.监督学习等算法中.该算法在强化学习中可以实现元强化学习 ...

  9. 【转载】 MPP大规模并行处理架构详解

    本文来自博客园,作者:五分钟学大数据 原文链接:https://www.cnblogs.com/itlz/p/14998858.html =============================== ...

  10. 常用的多臂赌博机算法——Bandit Algorithms for Website Optimization

    "Bandit Algorithms for Website Optimization by John Myles White. Copyright 2013 John Myles Whit ...