2011-12-28 15 views
1

当窗口关闭时,我正在调用方法TryClose来显示对话框。但是当我点击Cancel该应用程序关闭。任何想法只是为了“隐藏”对话框,不做别的事情?MessageBoxResult按钮取消关闭应用程序

public void TryClose() 
{ 
    MessageBoxResult result = MessageBox.Show("Do you want to save changes?", appName, MessageBoxButton.YesNoCancel, MessageBoxImage.Warning); 

    switch (result) 
    { 
     case MessageBoxResult.Yes: 
      SaveAs(); 
      break; 
     case MessageBoxResult.No: 
      this.Close(); 
      break; 
    } 
} 
+0

尝试添加一个默认情况。 – 2011-12-28 18:22:32

回答

1

你的代码改成这样:

public bool TryClose() 
{ 
    MessageBoxResult result = MessageBox.Show("Do you want to save changes?", appName, MessageBoxButton.YesNoCancel, MessageBoxImage.Warning); 

    switch (result) 
    { 
     case MessageBoxResult.Yes: 
      SaveAs(); 
      return false; 
     case MessageBoxResult.No: 
      this.Close(); 
      return false; 
    } 

    return true; 
} 

而在你关闭事件处理程序,把这个:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    e.Cancel = TryClose(); 
} 
0
private void Form_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    TryClose(e); 
} 

然后:

switch (result) 
{ 
    case MessageBoxResult.Yes: 
     SaveAs(); 
     break; 
    case MessageBoxResult.No: 
     this.Close(); 
     break; 
    default: 
     e.Cancel=true; 
     break; 
} 
+1

这里没有'e'。 – 2011-12-28 18:24:58

相关问题