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. iOS开发基础143-性能优化

    我们可以先构建一个详细的大纲,然后在每个部分详细阐述.下面是一个针对iOS性能优化的详细大纲: 一. App启动时间优化 A. 启动分类 冷启动 热启动 B. 冷启动优化 减少启动时的动态库加载 尽可 ...

  2. java一些位运算的方法

    记录一些java位运算的方法 Integer.bitCount:用于记录一个int输转化成二进制之后里面包含了多少个1. 使用例题为leetcode2859 切记下面规则要先转二进制 &相同位 ...

  3. 【Spring】04 注解实现自动装配

    1.使用注解实现自动装配 注解的基础源于JDK1.5的新特性 在Spring2.5开始支持了注解功能 如何使用? 1.导入约束 xmlns:context="http://www.sprin ...

  4. 【Win10】找不到Telnet命令

    百度才发现原来我的Telnet程序就没启动... CMD终端就找不到命令... 但是有一点要注意!不能使用CMD之外的终端访问[GitBash访问无效] 打开控制面板,点卸载程序: 然后点击启动和关闭 ...

  5. 并行化强化学习 —— 初探 —— 并行reinforce算法的尝试 (中篇:强化学习在大规模仿真环境下单步交互并行化设计的可行性)

    本篇博客是前篇博客并行化强化学习 -- 初探 -- 并行reinforce算法的尝试 (上篇:强化学习在多仿真环境下单步交互并行化设计的可行性)的继续,文中代码地址为:https://gitee.co ...

  6. 代码随想录Day16

    513.找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值. 假设二叉树中至少有一个节点. 示例 1: 输入: root = [2,1,3] 输出: 1 示 ...

  7. 国产化适配——银河麒麟V10(1)

    前言 为响应国家"信创"建设,公司最近在搞国产化适配,我刚好负责这搞一部分,做个记录吧. 主要包括三块:国产服务器操作系统银河麒麟V10,国产数据库人大金仓kingbase,中间件 ...

  8. 使用 reloadNuxtApp 强制刷新 Nuxt 应用

    title: 使用 reloadNuxtApp 强制刷新 Nuxt 应用 date: 2024/8/22 updated: 2024/8/22 author: cmdragon excerpt: re ...

  9. esphome esp8266刷写遇到的问题

    问题描述: 在尝试打开串口时出现以下错误信息: Failed to execute 'open' on 'SerialPort': Failed to open serial port. 起因: 莫名 ...

  10. C#学习日记

    2023年9月9日 工具visual stdio 2019 窗口名称修改 lable标签 button 点击事件 点击换颜色 formLearn.ActiveForm.BackColor = Colo ...