1

新しい子フォームを開いたときにすべての子フォームを閉じるには、次のC#WinFormsコードがあります。

private void CloseAllActiveForms(Form[] MdiChildren)
{
    Form[] childArray = MdiChildren;
    foreach (Form childform in childArray)
    {
        childform.Close();
    }
}

WPFウィンドウでどのように使用できますか?

以下のコードを試しましたが、親ウィンドウとアクティブウィンドウを含むすべてのウィンドウが閉じます。

private void CloseAllWindows()
{
    for (int intCounter = App.Current.Windows.Count - 1; intCounter >= 0; intCounter--)
    {
        Application.Current.Windows[intCounter].Close();
    }
}

ありがとう。

4

2 に答える 2

5

私の知る限り、WPF の MDI サポートは限られているため、疑似子ウィンドウを作成するときに Tag 属性を使用してみてください。

Window child = new Window();
child.Tag = "mdi_child";

次に、ループ内で次のように変更します。

foreach (Window win in App.Current.Windows)
{
    if (!win.IsFocused && win.Tag.ToString() == "mdi_child")
    {
        win.Close();
    }
}

上記の解決策が機能するには、すべてのウィンドウに Tag 属性が必要であることに注意してください。そうしないと、 で例外がスローされwin.Tag.ToString()ます。

于 2012-06-05T02:57:03.897 に答える