2015-07-06 56 views
0

我在WPF中创建了一个自定义对话框。我想,当用户点击X时,对话框将被打开,如果他想退出,请点击“是”,否则应点击“否”。WPF dialogBox不关闭应用程序

static public bool? close; 
    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
    { 
     this.Hide(); 
     WindowClose windowClose = new WindowClose(); 
     windowClose.ShowDialog(); 
     close = windowClose.DialogResult; 
     if (close == true) 
     { 
      Application.Current.Shutdown(); 
     } 

     else 
     { 
      //DONT CLOSE THE APPLICATION AND SHOW THE CURRENT WINDOW 
     } 

    } 

对话框的代码:

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     this.DialogResult = true; 
     this.Close(); 
    } 

    private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     this.DialogResult = false; 
     this.Close(); 
    } 
+0

设置'CancelEventArgs.Cancel'到TRUE;以阻止对话框关闭。在这里看到答案#2:http://stackoverflow.com/questions/23613694/wpf-mvvm-cancel-window-closing-event/23614197#23614197 –

+0

好吧,我fount如何...我补充说:e.Cancel =真正; this.Show(); – user3590450

+0

[隐藏窗口,直到它再次需要]的可能重复(http://stackoverflow.com/questions/16567818/hide-a-window-until-its-needed-again) –

回答

0

不知道它的工作方式不同在WPF,但在标准的WinForms为你设置的(例如)对话框的代码DialogResult转换为DialogResult.OK(是)和DialogResult.Cancel(no)。你不会需要关闭的形式,因为这是自动完成的,当你在主窗体设置的DialogResult

然后你不得不

If (windowClose.ShowDialog() == DialogResult.OK 
{ 
    Application.Current.Shutdown(); 
} 
else 
{ 
    //DONT CLOSE THE APPLICATION AND SHOW THE CURRENT WINDOW 
}