我正在制作一个Win Forms应用程序以了解更多信息,因为我对它没有多少经验。在我的程序中,在主窗体中,我有一个按钮。单击它将启动另一个表单。代码如下:
private void btn_AddCat_Click(object sender, EventArgs e)
{
this.Invoke(new MethodInvoker(() =>
{
form_NewCat NewCatForm = new form_NewCat();
NewCatForm.Show();
}));
MessageBox.Show("Oops!");
}
问题是,当启动新表单时,我希望执行主表单后面的代码暂停,直到新表单关闭。举个例子,在上面的代码中,我不想要'糟糕!'在新表格关闭之前打印。我怎样才能做到这一点?
答案 0 :(得分:17)
更改行
NewCatForm.Show();
到
NewCatForm.ShowDialog();
答案 1 :(得分:11)
当您在UI线程中时,不需要调用。并且您在按钮单击事件处理程序的UI线程中。
private void btn_AddCat_Click(object sender, EventArgs e)
{
form_NewCat NewCatForm = new form_NewCat();
var dialogResult = NewCatForm.ShowDialog();
MessageBox.Show("Oops!");
}
如果你的form_NewCat在关闭之前将this.DialogResult设置为任何值,则可以检查dialogResult是否为OK,取消,是,否等。这是表示用户退出表单/对话框的通常方式。
答案 2 :(得分:6)
您需要一个模态对话框,我认为您需要NewCatForm.ShowDialog();
答案 3 :(得分:5)
只需将Show更改为showDialog;这也让你得到一个返回值来表明表单是否认为自己退出时具有特定状态(ok,cancel等)。