消息框图标 -> 变量?
Message Box Icon -> Variable?
我正在制作一个 MessageBox 方法,我可以在我的程序中快速调用它,而不必创建多个 MessageBox 代码,但是我 运行 进入的是 运行所有东西都有相同的图标,目前是错误的。
有什么方法可以在方法调用时动态改变图标吗?
这是我目前所拥有的,并且运行良好。
private void MB(string Text, String Title)
{
MessageBox.Show(Text, Title,
System.Windows.Forms.MessageBoxButtons.OKCancel,
System.Windows.Forms.MessageBoxIcon.Error);
}
我希望做的是创建:
private void MB(string Text, String Title, Variable ICON)
{
MessageBox.Show(Text, Title,
System.Windows.Forms.MessageBoxButtons.OKCancel,
System.Windows.Forms.MessageBoxIcon.ICON);
}
并且能够调用它:
MB("String 1", "String 2", Error);
MB("String 1", "String 2", Question);
不确定这是否可行?
感谢您的帮助:D
该图标是一个 enum
,因此您可以这样做:
private void MB(string Text, String Title, MessageBoxIcon ICON)
{
MessageBox.Show(Text, Title,
MessageBoxButtons.OKCancel,
ICON);
}
您可以像这样使用它:
MB("String 1", "String 2", MessageBoxIcon.Error);
也许创建一个语言扩展,在这种情况下有几个可供选择。
在这种情况下,以下代码在一个表单中,源代码在一个 class 项目中 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);
class 项目中的来源
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");
}
我正在制作一个 MessageBox 方法,我可以在我的程序中快速调用它,而不必创建多个 MessageBox 代码,但是我 运行 进入的是 运行所有东西都有相同的图标,目前是错误的。
有什么方法可以在方法调用时动态改变图标吗?
这是我目前所拥有的,并且运行良好。
private void MB(string Text, String Title)
{
MessageBox.Show(Text, Title,
System.Windows.Forms.MessageBoxButtons.OKCancel,
System.Windows.Forms.MessageBoxIcon.Error);
}
我希望做的是创建:
private void MB(string Text, String Title, Variable ICON)
{
MessageBox.Show(Text, Title,
System.Windows.Forms.MessageBoxButtons.OKCancel,
System.Windows.Forms.MessageBoxIcon.ICON);
}
并且能够调用它:
MB("String 1", "String 2", Error);
MB("String 1", "String 2", Question);
不确定这是否可行?
感谢您的帮助:D
该图标是一个 enum
,因此您可以这样做:
private void MB(string Text, String Title, MessageBoxIcon ICON)
{
MessageBox.Show(Text, Title,
MessageBoxButtons.OKCancel,
ICON);
}
您可以像这样使用它:
MB("String 1", "String 2", MessageBoxIcon.Error);
也许创建一个语言扩展,在这种情况下有几个可供选择。
在这种情况下,以下代码在一个表单中,源代码在一个 class 项目中 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);
class 项目中的来源
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");
}