如何根据MessageBox的选择显示对话框
本文关键字:选择 显示 对话框 MessageBox 何根 | 更新日期: 2023-09-27 18:03:37
我在这里使用c#。我有一个表单,用户可以选择是或否,如果他们选择否,将出现一个消息框,询问他们是否确定。如果他们点击No,我想再次显示表单。下面是我的代码:
public void function()
{
MyForm form = new MyForm();
if (form.ShowDialog() == DialogResult.No)
{
if (MessageBox.Show("Are you sure?",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
runFinished.Dispose();
return;
}
else
{
//Show form again. How??
}
}
}
谢谢大家的帮助!
安排No
按钮MyForm
调用MessageBox
。只有在用户确定之后,您才能继续关闭对话框。你现在在对话结束后问问题的方法是不正确的。
您可以通过确保在代码中设置DialogResult
而不是通过No按钮的DialogResult
属性来实现更改。然后在按钮的click处理程序中运行消息框。如果用户确认操作,则将表单DialogResult
设置为DialogResult.No
。
根据是否选择了no或yes调用两个事件(在MyForm中)。例如
void OnNoEvent(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure?", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
this.DialogResult = DialogResult.No;
this.Close();
}
}
void OnYesEvent(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Yes;
this.Close();
}
这可能比多次打开对话框要好。
那么打开对话框的代码就很简单了。
MyForm form = new MyForm();
if (form.ShowDialog() == DialogResult.No)
// perform actions here
有一个标准的方法:Form.FormClosing.
参见example: example
也许我在这里错过了一些东西,但为什么不使用while循环?
public void function()
{
MyForm form = new MyForm();
while(form.ShowDialog() == DialogResult.No)
{
if (MessageBox.Show("Are you sure?",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
runFinished.Dispose();
return;
}
}
}