问题描述
|
我在Form1中单击按钮时打开Form2:
Form2 f2 = new Form2()
在Form2已经打开的情况下,再次单击Form1上的按钮将显示已经打开的Form2。但是我希望Form2已经打开时不应该打开它。
关闭Form2后,再次单击该按钮时,它应显示Form2(因为Form2已关闭,即没有实例在运行)。
如何才能做到这一点?
编辑:
我希望Form2已经打开时不应该打开它。
解决方法
您还可以使用Application.OpenForms属性返回所有打开的Windows窗体的集合。您可以搜索此集合,以查看当前是否打开了Form1(或Form2)。
, 除了SLaks答案外,还检查form.IsDisposed,以便您拥有
void Something() {
if (form == null || form.IsDisposed)
form = new OtherForm();
form.Show();
}
我也发现form.Activate()很有帮助,这样您就可以将注意力集中在表单上
, 您需要在第一种形式中创建一个包含第二种形式的现有实例的字段。
例如:
OtherForm form;
void Something() {
if (form == null)
form = new OtherForm();
form.Show();
}
,
Show
创建后的表格,
Activate
将该表格带到最前面(或者,如果您的应用程序在后台,则闪烁窗口标题)。这要求将窗体“ 5”属性设置为true,但这是Visual Studio中的默认设置。
private void ShowForm1(object sender,EventArgs e)
{
if (this.form1 == null)
{
this.form1 = new Form1();
this.form1.Show();
}
else
{
this.form1.Activate();
}
}