简介:代码(两个函数)解释了我正在尝试做的所有事情并告诉我的问题
每当我必须在我的应用程序中打开一个新的子表单时。我用来调用以下函数。(一个子窗体可以有另一个子窗体)
public void openNextForm(Form f1, Form f2)
{
f2.Owner = f1;
f2.WindowState = FormWindowState.Maximized;
f2.FormClosing += new FormClosingEventHandler(f_FormClosing);
f1.Hide();
f2.ShowDialog();
}
// When I close a child form by clicking cross or with ALT-F4
void f_FormClosing(object sender, FormClosingEventArgs e)
{
Form f = sender as Form;
f.Owner.Show();
}
在关闭子表单时,我用来显示所有者/父表单。它工作正常。
但在某些情况下,所有者表单的某些控件(按钮)在关闭子表单上显示时会被隐藏,例如
但这种形式的实际状态是
只有当我从一个复杂而冗长的编码子表单返回时,我才必须面对这种行为(在这种情况下,它有时可以正常工作)。在简单(小编码)子表单的情况下,行为是正常的。
如果我在奇怪的行为表单上按 alt 键,则 from 在实际状态下令人惊讶地显示
我试图寻找这个问题并发现了很多类似的问题,但我能看到的最接近的是以下问题,但在 showdialog 的情况下它仍然无法帮助我
如果使用上面链接中的以下代码,每当我打开一个子表单然后再打开一个子表单时。所有表格都被隐藏。所以它也不能正常工作。
public void openNextForm(Form f1, Form f2)
{
f2.Owner = f1;
f2.Show();
f1.Hide();
f2.FormClosing += new FormClosingEventHandler(f_FormClosing);
}
使用标签应该是一种解决方案,但我想在关闭/隐藏/显示期间在所有情况下保持表单分离和一致的行为