我正在制作一個 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
uj5u.com熱心網友回復:
圖示是enum,所以你可以這樣做:
private void MB(string Text, String Title, MessageBoxIcon ICON)
{
MessageBox.Show(Text, Title,
MessageBoxButtons.OKCancel,
ICON);
}
你可以像這樣使用它:
MB("String 1", "String 2", MessageBoxIcon.Error);
uj5u.com熱心網友回復:
也許創建一個語言擴展,在這種情況下有幾個可供選擇。
在這種情況下,以下代碼是一種形式,源代碼在類專案中,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");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/357994.html
