如何防止最小化父 window 关闭子 window

How to prevent minimizing parent window from closing child window

美好的一天,

我想看看是否有人可以帮助解决我遇到的以下问题。我有一个使用 ShowDialog(this) 显示的子窗体,我正在注册到 Resize 事件,以便我可以更改父项和子项的状态。问题是当父窗体最小化时,子窗体关闭。我已经确定父级中的 WindowState = FormWindowState.Minimized 调用会导致 using 语句通过 ShowDialog(IWin32Window) 的阻塞调用,但我不明白只有子级最小化(而父级是然后无法获得焦点),阻塞调用不会通过。我该如何解决这种行为?最好不要引用子 window 并在每次父 WindowState 更改时检查它。

我的代码:

private void StockTakeHistoryMenu_Click(object sender, EventArgs e)
{
    using (StockTakeWindow window = new StockTakeWindow())
    {
        window.Resize += this.ChildStateChanging;
        window.ShowDialog(this);
        window.Resize -= this.ChildStateChanging;
    }
}

private void ChildStateChanging(object sender, EventArgs e)
{
    switch ((sender as Form).WindowState)
    {
        case FormWindowState.Normal:
            this.WindowState = FormWindowState.Normal;
            break;

        case FormWindowState.Minimized:
            this.WindowState = FormWindowState.Minimized;
            break;

        case FormWindowState.Maximized:
            this.WindowState = FormWindowState.Maximized;
            break;
    }
}

你可以使用这个:

private void ChildStateChanging(object sender, EventArgs e)
{
    this.Show();

    switch ((sender as Form).WindowState)
    {
        case FormWindowState.Normal:
            this.WindowState = FormWindowState.Normal;
            break;

        case FormWindowState.Minimized:
            //this.WindowState = FormWindowState.Minimized;
            this.Hide();
            break;

        case FormWindowState.Maximized:
            this.WindowState = FormWindowState.Maximized;
            break;
    }
}

我在 ChildStateChanging 的第一个调用 this.Show();,我写了 this.Hide() 而不是 this.WindowState = FormWindowState.Minimized;.