我有一个显示覆盖窗体的 Windows 窗体:
private void ShowWait()
{
frmOverlay = new Base.frmOverlay("Please Wait...");
frmOverlay.Show(this);
}
这个 frmOverlay
表单同时显示它在中间显示另一个表单(消息表单):
private void frmOverlay_Load(object sender, EventArgs e)
{
frmPleaseWait = new frmPleaseWait(_text);
frmPleaseWait.Show(this);
}
当我最小化主窗体时,我仍然可以看到 frmPleaseWait
窗体,有什么方法可以在主窗体最小化时全部最小化吗?
最佳答案
您可以创建一个递归函数来最小化所有子表单。
public void MinimizeAllChildForms(Form parent)
{
foreach(Form f in parent.OwnedForms)
{
f.WindowState = FormWindowState.Minimized;
MinimizeAllChildForms(f);
}
}
然后在您的主窗体中,从 Resize
事件中调用它。
void MainForm_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
MinimizeAllChildForms(this);
}
我假设您希望 frmPleaseWait
在 frmOverlay
最小化时也最小化。如果您不这样做,那么您可以简单地将其父级设置为主窗体,这样当主窗体出现时它会自动最小化。
frmPleaseWait = new frmPleaseWait(_text);
frmPleaseWait.Show(MainForm);
关于C# WinForms 在主窗体最小化时最小化 form.Show(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18805027/