【发布时间】:2010-12-16 21:04:21
【问题描述】:
我在 c# 3.5 应用程序上遇到了奇怪的表单行为。单击按钮时,我的 form1 会隐藏自己,创建一个新的 form2,并显示 form2。 Form1 还包含当 form2 关闭时触发的事件方法。这是 Form1 中的代码:
Form2 form2;
void button1_Click(object sender, EventArgs e)
{
this.Hide();
form2 = new form2();
form2.Show();
form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);
}
void form2_FormClosed(object sender, FormClosedEventArgs e)
{
form2.Dispose();
form2 = null;
this.Show();
}
现在,我的问题是,有时当我打开 form2(隐藏 form1),或者当我关闭 form2(显示 form1)时,新的表单会在屏幕上出现一闪然后隐藏。它仍然打开,我可以从任务栏中单击它以再次显示它,但窗口本身会发送到任何其他打开的窗口后面。它看起来像打开但立即最小化。
此行为随机发生。有时表单会毫无问题地打开和隐藏,但有时它们会在另一个窗口上失去焦点。我尝试过使用 focus()、activate() 和 topmost,但都无法防止突然隐藏。
有谁知道为什么会发生这种情况以及如何解决?
谢谢。
【问题讨论】:
-
为什么要更新 form2()?不应该是form2 = new Form();
-
@Soviut - 写问题时可能只是一个错字
-
你可以试试 ShowDialog() 吗?
-
@Soviut:form2 是一个 Form2 实例。我不确定你是什么意思。 @Stormenet:showDialog 在尝试再次显示 form1 时给了我同样的随机问题:(
标签: c# forms controls hide show