2012-02-05 86 views
2

我是C#和WPF的新手。我想打開一個新窗口,並保持完全在該窗口鎖定父母,即類似於MessageBox如何創建模態窗口?

我有一個菜單項,我選擇調用方法OnClose,然後創建並顯示我確認關閉窗口。我禁用父母,但它貫穿整個方法,我想等待,直到我創建的第二個窗口已關閉。

void OnClose(object sender, ExecutedRoutedEventArgs args) 
    { 
     //this.IsEnabled = true; 
     ConfirmClose cc = new ConfirmClose(); 
     this.IsEnabled = false; 
     cc.Show(); 
     cc.Focus(); 
// How can I wait here until the windows cc has closed 
     this.IsEnabled = true; 


    } 
+0

我想你可能會對OnClosing事件感興趣,它允許你取消關閉 – kenny 2012-02-05 15:44:55

回答

10

代替.Show()使用.ShowDialog(),則該用戶不能返回到父窗口,除非他關閉表單,像這樣:

ConfirmClose cc = new ConfirmClose(); 
cc.ShowDialog(); 

假設ConfirmCloseSystem.Windows

+0

具體來說,他正在尋找_blocking call_。 – SLaks 2012-02-05 15:47:16

+0

OP的想法正確,很好的答案。 – ken2k 2012-02-05 15:51:35

+0

@SLaks,他正在尋找一個*阻塞調用*,爲了鎖定用戶的父窗口直到他關閉了'ConfirmClose()',並且這個'ShowDialog()'做了什麼。這是我從OP的問題中所理解的。 – 2012-02-05 15:53:47