「すべてのウィンドウを閉じる」を実行してもすべてのウィンドウが閉じない

Tomokazu Miyazaki 0 評価のポイント
2025-02-11T06:08:11.42+00:00

WPF .net9 でWindowsデスクトップアプリを作成しています。

一つのメインのウィンドウから子ウィンドウを生成し、その子ウィンドウが複数あるものです。

例えばメインウィンドウを表示し、その後子ウィンドウを二つ起動したとします。

その状態でタスクバーから「すべてのウィンドウを閉じる」を実行してもウィンドウがすべて閉じませんが、これはなぜでしょうか。

再現方法は以下の通りです。

  1. Visual Studio 2022を起動し、C#のWPFアプリケーションのプロジェクトを作成します。
  2. 作成したプロジェクトに、WPFウィンドウを追加します。
  3. メインウィンドウのコードを以下のようにします。
  4. 実行します。(すると、MainWindow 1つとWindow1が2つ表示されます)
  5. タスクバーから「すべてのウィンドウを閉じる」を行います。
namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Window1 w1 = new Window1();
            Window1 w2 = new Window1();

            w1.Show();
            w2.Show();
        }
    }
}
.NET
.NET
.NET ソフトウェア フレームワークに基づく Microsoft テクノロジ。
77 件の質問
Windows Presentation Foundation
Windows Presentation Foundation
Windows で基幹業務デスクトップ アプリケーションを構築するための統合プログラミング モデルを提供する .NET Framework の一部。
1 件の質問
C#
C#
C 言語ファミリをルーツとし、コンポーネント指向プログラミングのサポートを含む、オブジェクト指向およびタイプセーフのプログラミング言語。
40 件の質問
0 件のコメント コメントはありません
{count} 件の投票

1 件の回答

並べ替え方法: 最も役に立つ
  1. Jiale Xue - MSFT 48,871 評価のポイント Microsoft ベンダー
    2025-02-11T09:26:47.5333333+00:00

    @Anonymous , Microsoft Q&A フォーラムへようこそ。

    デフォルトでは、作成する子ウィンドウは独立したトップレベル ウィンドウであり、所有者が指定されていないため、メイン ウィンドウの従属ウィンドウとは見なされません。 子ウィンドウを作成するときは、

    メイン ウィンドウを所有者として設定します。 例:

    Window1 w1 = new Window1 { Owner = this };
    Window1 w2 = new Window1 { Owner = this };
    w1.Show();
    w2.Show();
    

    このように、メイン ウィンドウが閉じられると、オーナーを持つすべての子ウィンドウも自動的に閉じられます。

    上記の説明がお役に立てば幸いです。


    回答が正しい解決策である場合は、「回答を受け入れる」をクリックして、賛成票を投じてください。この回答について追加の質問がある場合は、「コメント」をクリックしてください。 注: このスレッドに関連する電子メール通知を受信したい場合は、ドキュメントの手順に従って電子メール通知を有効にしてください。


お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。