2016-09-20 4 views
0

私はボードゲームとして機能するプロジェクトを持っています。このボードゲームでは、私は複数のミニゲームをプレイすることができます(メモリゲーム、チックタック、掃海砲など)。私の問題は、プロジェクトを終了させないようにする方法です。彼は他のゲームをプレイできるように新しいゲーム。C#/ WPF:プロジェクト全体を閉じずに現在のウィンドウを閉じる

私はベースのウィンドウとしてボードゲームのウィンドウを持っています。そのウィンドウの中にゲームのグリッドがあります。

たとえば、私がtic-tac-toeに勝ったとき、オプションyesとnoで新しいゲームを開始するかどうかを尋ねるメッセージボックスが表示されます。しかし、いいえを選んだ場合、チック・タック・トゥを弾くのを止めるのではなく、プロジェクト全体が終了します。

私は三目並べゲームを閉鎖するため、この方法を持ってチック・タック・toe.csで

internal void newGame(string message) 
     { 
      if(MessageBox.Show("Play Again?", message, MessageBoxButton.YesNo) == MessageBoxResult.Yes) 
      { 
       Clear(); // calls the method to clear buttons etc. 
      } 
      else 
      { 
       //Application.Current.MainWindow.Close(); 
       //Application.Current.Windows[Application.Current.Windows.Count - 1].Close(); 

      } 
     } 

あなたは、彼らが閉鎖しないようエルスの両方の行がコメントになって見ることができるようにチック・タック・トゥ・ゲームの代わりにプロジェクト全体を

+0

あなただけの 'Application.Current.Windowsは[Application.Current.Windows.Count - 1]がある場合はどうなります.Close();'であなたの他の声明? – auburg

+0

基本的に、アプリケーションには** ** 1つの**ウィンドウしかありませんか?その場合、そのウィンドウを閉じることはできません。ちょうどタク・タック・トゥー・グリッドを、折りたたんで表示するように設定して隠すだけです。 – 3615

+0

'Application.Current.MainWindow.Close()'は常に現在のウィンドウを閉じます。あなたのケースでは、他の小さなゲームのコンテナです。小さなゲームは 'Application'から派生した新しいウィンドウではないと私は推測します。グリッドを使用していると述べているので、初期状態に戻すことをお勧めします。 – Sagar

答えて

1

あなたがメインウィンドウのウィンドウのclosingイベントを上書きすることができます。

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    //You can ask users to play new games, if they click close window (etc.) 
    e.Cancel = true; //This will cancel the closing of main window. 
    //You can now write logic to close your local windows (dispose objects of games) and show the main window. 
} 
関連する問題