2

我在 C# 中有两种形式,一种我打算用作对话结果,另一种是“主”形式。如何设置另一个表单,以便 form1 中的代码等到第二个表单被解除,然后再继续执行下一行代码?

4

3 回答 3

5

您可以在 form2 上使用Form.ShowDialog方法。

// Some code in form1
var form2 = new Form2();
form2.ShowDialog();
// Note: this code will resume after form2 has been closed.

或者,您可以订阅Form.Closed事件以在 form2 关闭时运行一些代码。

// Some code in form1
var form2 = new Form2();
form2.Closed += (s, e) {
    // Note: this code will run after form2 has been closed.
};
form2.Show();
于 2013-07-22T14:23:00.913 回答
0

代码可能如下所示:

...

var o = new Form2();
o.ShowDialog();

// resumes after closure of Form2
...

您可以在这里做的另一件事是:

var res = o.ShowDialog();
if (res == DialogResult.Cancel)
{
    // do something because the user canceled the dialog
}

此外,您可以在表单上设置默认的接受取消按钮。只需转到 的属性Form并注意CancelButtonAcceptButton。这有两件事:

  1. 确定DialogResult由这些按钮发送。
  2. 管理这些按钮的击键EnterEsc击键。
于 2013-07-22T14:24:14.370 回答
0

您可以尝试ShowDialog方法:

if (MyForm.ShowDialog(this) == DialogResult.OK)
{
    // Resume after closure on "OK"
}
else
{
    // Resume after closure on "Cancel/Abort/No/None/Etc..."
}
于 2013-07-22T14:24:29.540 回答