我在这里使用C#。我有一个表单,用户可以选择是或否,如果他们选择否,则会出现一个消息框,询问他们是否确定。如果他们单击否,我想再次显示该表单。这是我的代码:
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??
}
}
}
感谢大家的帮助!
答案 0 :(得分:3)
安排No
按钮MyForm
拨打MessageBox
电话。只有当用户确定您,然后继续关闭对话框。在对话框关闭后,您当前提出问题的方法是不正确的。
您可以通过确保在代码中设置DialogResult
而不是使用No按钮的DialogResult
属性来实现更改。然后在按钮的单击处理程序中运行消息框。如果用户确认操作,请将表单DialogResult
设置为DialogResult.No
。
答案 1 :(得分:2)
根据是否选择了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
答案 2 :(得分:1)
有标准手段:Form.FormClosing。
参见示例:example
答案 3 :(得分:0)
也许我在这里遗漏了一些东西,但为什么不使用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;
}
}
}