我有两种形式。第一个是父级,包含对第二个的引用和一个按钮:
public class Form1:Form {
private Form2 frm2;
private Button btnShow;
...
}
当我按下按钮时 frm2 必须显示(可见并在所有其他窗口前面)并且 Form1 必须隐藏。
当我按下frm2的closebox时,frm2必须隐藏并且Form1必须显示(反向)。
我使用 btnShow 的 click 事件来注册一个句柄,它所做的只是:
private void click(object sender, EventArgs e)
{
Hide();
frm2.Show(this);
}
在 frm2 的 FormClosing 事件中:
private void byebye(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
Hide();
Owner.Show();
}
}
我的代码在 90% 的时间内都有效,但有时(我无法指定何时)显示的表单没有被带到前面或失去焦点(我不确定我认为是第一个)。
我做错了什么。我尝试交替显示和隐藏的顺序并使用新的参考而不是所有者,我也使用了激活,BringToFront,焦点但没有成功......