C# 检测打开的窗体
我在Form1中单击按钮打开Form2:C# 检测打开的窗体,c#,.net,C#,.net,我在Form1中单击按钮打开Form2:Form2 f2=new Form2() 如果Form2已打开,再次单击Form1上的按钮将显示已打开的Form2。但是我希望Form2在已经打开的时候不要打开 当Form2关闭时,再次单击按钮,它应该显示Form2(因为Form2已关闭,即没有运行它的实例) 如何做到这一点 编辑: 我希望Form2在已打开时不应打开。您需要在第一个表单中创建一个字段,用于保存第二个表单的现有实例 例如: OtherForm form; void Something()
Form2 f2=new Form2()
如果Form2已打开,再次单击Form1上的按钮将显示已打开的Form2。但是我希望Form2在已经打开的时候不要打开
当Form2关闭时,再次单击按钮,它应该显示Form2(因为Form2已关闭,即没有运行它的实例)
如何做到这一点
编辑:
我希望Form2在已打开时不应打开。您需要在第一个表单中创建一个字段,用于保存第二个表单的现有实例 例如:
OtherForm form;
void Something() {
if (form == null)
form = new OtherForm();
form.Show();
}
您需要在第一个表单中创建一个字段,用于保存第二个表单的现有实例 例如:
OtherForm form;
void Something() {
if (form == null)
form = new OtherForm();
form.Show();
}
除了答案,还要检查form.IsDisposed,这样你就有了答案
void Something() {
if (form == null || form.IsDisposed)
form = new OtherForm();
form.Show();
}
此外,我还发现form.Activate()非常有用,这样您就可以在form中获得焦点了除了SLaks答案之外,还可以检查form.IsDisposed,这样您就可以
void Something() {
if (form == null || form.IsDisposed)
form = new OtherForm();
form.Show();
}
此外,我还发现form.Activate()的帮助信息,以便在表单中获得焦点。您还可以使用Application.OpenForms属性返回所有打开的windows表单的集合。您可以搜索此集合以查看Form1(或Form2)当前是否打开。您还可以使用Application.OpenForms属性返回所有打开的windows窗体的集合。您可以搜索此集合,查看Form1(或Form2)当前是否打开。
- 创造后的形式,
- 将其放在前面的表单(如果应用程序位于后台,则刷新窗口标题)。这要求表单属性设置为true,但这是VisualStudio中的默认值
private void ShowForm1(object sender, EventArgs e) { if (this.form1 == null) { this.form1 = new Form1(); this.form1.Show(); } else { this.form1.Activate(); } }
- 创造后的形式,
- 将其放在前面的表单(如果应用程序位于后台,则刷新窗口标题)。这要求表单属性设置为true,但这是VisualStudio中的默认值
private void ShowForm1(object sender, EventArgs e) { if (this.form1 == null) { this.form1 = new Form1(); this.form1.Show(); } else { this.form1.Activate(); } }