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

デフォルトのケースを追加してみてください。 –

答えて

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」はありません。 –

関連する問題