也许创建一个语言扩展,在这种情况下有几个可供选择。
在这种情况下,以下代码在一个表单中,源代码在一个类项目WindowFormsHelpersLibrary中,所以要使用它们添加一个静态 using 语句。
请注意,有些人还将默认按钮设置为“否”,我发现这对于那些不注意说要求删除记录的用户很有用。
表单代码
使用静态 WindowFormsHelpersLibrary.LanguageExtensions.Dialogs;
使用 MessageBox = System.Windows.Forms.MessageBox;
if (MessageBox("Whatever to say", "Demo", MessageBoxIcon.Asterisk))
{
MessageBox.Show("Ok");
}
else
{
MessageBox.Show("Cancelled");
}
if (MessageBox("Whatever to say"))
{
MessageBox.Show("Ok");
}
else
{
MessageBox.Show("Cancelled");
}
if (Question("Continue with processing"))
{
MessageBox.Show("Ok");
}
else
{
MessageBox.Show("Cancelled");
}
InformationDialog("Operation completed","Bulk upload", MessageBoxIcon.Exclamation);
类项目中的源代码
using System.Diagnostics;
using System.Windows.Forms;
using static System.Windows.Forms.MessageBox;
namespace WindowFormsHelpersLibrary.LanguageExtensions
{
public static class Dialogs
{
[DebuggerStepThrough]
public static bool Question(string text) =>
(Show(text, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2) == DialogResult.Yes);
[DebuggerStepThrough]
public static bool Question(string text, MessageBoxIcon icon) =>
(Show(text, Application.ProductName, MessageBoxButtons.YesNo, icon,
MessageBoxDefaultButton.Button2) == DialogResult.Yes);
[DebuggerStepThrough]
public static void InformationDialog(string message, string title) =>
Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Information);
[DebuggerStepThrough]
public static void InformationDialog(string message, string title, MessageBoxIcon icon) =>
Show(message, title, MessageBoxButtons.OK, icon);
[DebuggerStepThrough]
public static void ErrorDialog(string message) =>
Show(message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
[DebuggerStepThrough]
public static void ErrorDialog(string message, string title) =>
Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
[DebuggerStepThrough]
public static bool MessageBox(string text, MessageBoxIcon icon = MessageBoxIcon.Error) =>
Show(text, Application.ProductName, MessageBoxButtons.OKCancel, icon) == DialogResult.OK;
[DebuggerStepThrough]
public static bool MessageBox(string text,string title, MessageBoxIcon icon = MessageBoxIcon.Error) =>
Show(text, title, MessageBoxButtons.OKCancel, icon) == DialogResult.OK;
}
}
或simpler 版本
public static class Dialogs
{
[DebuggerStepThrough]
public static bool MsgBox(string text, MessageBoxIcon icon = MessageBoxIcon.Error) =>
MessageBox.Show(text, Application.ProductName, MessageBoxButtons.OKCancel, icon) == DialogResult.OK;
[DebuggerStepThrough]
public static bool MsgBox(string text, string title, MessageBoxIcon icon = MessageBoxIcon.Error) =>
MessageBox.Show(text, title, MessageBoxButtons.OKCancel, icon) == DialogResult.OK;
}
用法
if (MsgBox("Continue?"))
{
MessageBox.Show("Yes");
}
else
{
MessageBox.Show("No");
}
if (MsgBox("Continue?", MessageBoxIcon.Question))
{
MessageBox.Show("Yes");
}
else
{
MessageBox.Show("No");
}