2

いくつかのウィンドウがあるwpfプロジェクトがあります。あるウィンドウから別のウィンドウに移動するときは、1つのウィンドウを非表示にして、まだ作成されていない場合は他のインスタンスを作成します。それ以外の場合は、表示します。

すべてのウィンドウにウィンドウを閉じるイベントハンドラーがあります

 private void Window_Closing_1(object sender, CancelEventArgs e)
    {
         {

        string message = "You are trying to close window " + this.Name + " .Are you sure?";
        string caption = "Exit";
        MessageBoxButton buttons = MessageBoxButton.YesNo;
        MessageBoxImage icon = MessageBoxImage.Question;
        if (MessageBox.Show(message, caption, buttons, icon) == MessageBoxResult.Yes)
        {
            App.Current.Shutdown();

        }
        else
        {
         MessageBox.Show("Closing aborted");

        }
    }

しかし、問題は、このイベントがすべてのウィンドウにあるため、閉じると、他のウィンドウからの非表示の他のプロンプトも多数表示されることです。1つのウィンドウだけで閉じた場合に他のpronptsを回避する方法はありますか?

4

2 に答える 2

3

App.xamlでExit属性を追加しようとしましたか?

この確認終了コードを1回だけ記述する必要があるため、より適切なソリューションになります。ウィンドウ名について送信者をウィンドウにキャストして、その名前を見つけることができます

于 2013-01-11T14:50:44.123 に答える
1

フォームのクローズを処理するために、別のクラスに静的メソッドを作成するだけです。

public class X 
{
    private static bool isClosingHandled = false;

    public static void HandleClose()
    {
        //// app closing logic
        isClosingHandled = true;
    }
}

private void Window_Closing_1(object sender, CancelEventArgs e)
{
    X.HandleClose();   
}
于 2013-01-11T14:42:40.907 に答える