2010-12-05 33 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();