2012-02-05 84 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