C# 验证MessageBox上的案例
我有这样的信息框:C# 验证MessageBox上的案例,c#,winforms,C#,Winforms,我有这样的信息框: if (MessageBox.Show("Message", "System message", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.No) { } 现在我想添加带有“是”和“取消”的其他案例,因为它是MessageBoxButtons。是的不取消,所以我尝试如下: if (MessageBox.Show("Message", "System message"
if (MessageBox.Show("Message", "System message", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.No)
{
}
现在我想添加带有“是”和“取消”的其他案例,因为它是MessageBoxButtons。是的不取消
,所以我尝试如下:
if (MessageBox.Show("Message", "System message", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.No)
{
}
else if (DialogResult.Yes)
{
return;
}
else if (DialogResult.Cancel)
{
return;
}
但VisualStudio用红色标记并抛出:
无法将类型“System.Windows.Forms.DialogResult”隐式转换为
“布尔”
如何在验证中添加“是”和“取消”案例?您需要将结果存储在类型为
DialogResult
的变量中:
var dialogResult = MessageBox.Show("Message", "System message", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (dialogResult == DialogResult.No)
{
}
else if (dialogResult == DialogResult.Yes)
{
return;
}
else if (dialogResult == DialogResult.Cancel)
{
return;
}
这样写会更好:
var dialogResult = MessageBox.Show("Message", "System message",
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (dialogResult == DialogResult.Yes || dialogResult == DialogResult.Cancel)
{
return;
}
// logic for No here
// as this means No was pressed
问题是您应该将
MessageBox.Show()
的结果存储到一个变量中,然后使用if
或switch
将结果与对话框result
枚举中的一个值进行比较
DialogResult result = MessageBox.Show("Message", "System message", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (result == DialogResult.Yes) {
// do something for yes
}
else if (result == DialogResult.Cancel)
{
// do something for cancel
}
else
{
// this will be no
}
将结果存储在一个变量中,并使用该变量在您的if/else块中进行比较,否则您可能会将其称为2或3倍您喜欢的可能性。