如何防止最小化父 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;
.
美好的一天,
我想看看是否有人可以帮助解决我遇到的以下问题。我有一个使用 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;
.