2010-12-05 71 views
9

我正在制作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!");    
     } 

的问题是,当新的形式推出,我想主要形式背后的代码的执行,在这一点上,直到新的形式被关闭暂停。作为一个例子,在上面的代码中,我不想'哎呀!'直到新表单关闭才能打印。我怎样才能做到这一点?

回答

10

当你在UI线程中时,不需要调用。而且你在按钮单击事件处理程序中的UI线程中。

private void btn_AddCat_Click(object sender, EventArgs e) 
{ 
    form_NewCat NewCatForm = new form_NewCat(); 
    var dialogResult = NewCatForm.ShowDialog(); 
    MessageBox.Show("Oops!");    
} 

您可以检查的DialogResult为确定,取消,是,否,等等,如果你的form_NewCat关闭前设置this.DialogResult为任意值。这是通知用户如何退出表单/对话框的方式。

+0

感谢。我会实施你的解决方案。 – xbonez 2010-12-05 17:29:31

5

只需将Show更改为ShowDialog;这也让你得到一个返回值来表示表单是否认为自己正在以特定状态退出(ok,cancel等)。

13

更改线路

NewCatForm.Show(); 

NewCatForm.ShowDialog(); 
6

你想一个模式对话框,我认为你需要NewCatForm.ShowDialog();