为 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 ...
随机推荐
- iOS开发基础143-性能优化
我们可以先构建一个详细的大纲,然后在每个部分详细阐述.下面是一个针对iOS性能优化的详细大纲: 一. App启动时间优化 A. 启动分类 冷启动 热启动 B. 冷启动优化 减少启动时的动态库加载 尽可 ...
- java一些位运算的方法
记录一些java位运算的方法 Integer.bitCount:用于记录一个int输转化成二进制之后里面包含了多少个1. 使用例题为leetcode2859 切记下面规则要先转二进制 &相同位 ...
- 【Spring】04 注解实现自动装配
1.使用注解实现自动装配 注解的基础源于JDK1.5的新特性 在Spring2.5开始支持了注解功能 如何使用? 1.导入约束 xmlns:context="http://www.sprin ...
- 【Win10】找不到Telnet命令
百度才发现原来我的Telnet程序就没启动... CMD终端就找不到命令... 但是有一点要注意!不能使用CMD之外的终端访问[GitBash访问无效] 打开控制面板,点卸载程序: 然后点击启动和关闭 ...
- 并行化强化学习 —— 初探 —— 并行reinforce算法的尝试 (中篇:强化学习在大规模仿真环境下单步交互并行化设计的可行性)
本篇博客是前篇博客并行化强化学习 -- 初探 -- 并行reinforce算法的尝试 (上篇:强化学习在多仿真环境下单步交互并行化设计的可行性)的继续,文中代码地址为:https://gitee.co ...
- 代码随想录Day16
513.找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值. 假设二叉树中至少有一个节点. 示例 1: 输入: root = [2,1,3] 输出: 1 示 ...
- 国产化适配——银河麒麟V10(1)
前言 为响应国家"信创"建设,公司最近在搞国产化适配,我刚好负责这搞一部分,做个记录吧. 主要包括三块:国产服务器操作系统银河麒麟V10,国产数据库人大金仓kingbase,中间件 ...
- 使用 reloadNuxtApp 强制刷新 Nuxt 应用
title: 使用 reloadNuxtApp 强制刷新 Nuxt 应用 date: 2024/8/22 updated: 2024/8/22 author: cmdragon excerpt: re ...
- esphome esp8266刷写遇到的问题
问题描述: 在尝试打开串口时出现以下错误信息: Failed to execute 'open' on 'SerialPort': Failed to open serial port. 起因: 莫名 ...
- C#学习日记
2023年9月9日 工具visual stdio 2019 窗口名称修改 lable标签 button 点击事件 点击换颜色 formLearn.ActiveForm.BackColor = Colo ...