检测开放形式

时间:2011-06-13 18:41:37

标签: c# .net

我在Form1中点击按钮时打开Form2:Form2 f2 = new Form2()

在Form2已经打开的情况下,再次单击Form1上的按钮会显示已打开的Form2。但我希望Form2在打开时不应该打开。

当Form2关闭时,再次单击该按钮时,它应显示Form2(因为Form2已关闭,即没有运行它的实例)。

如何做到这一点?

编辑: 我希望Form2在打开时不应该打开。

4 个答案:

答案 0 :(得分:2)

您还可以使用Application.OpenForms属性返回所有打开的窗体窗体的集合。您可以搜索此集合以查看Form1(或Form2)当前是否已打开。

答案 1 :(得分:1)

除了SLaks的答案,请检查表格。也请点击,以便

void Something() {
    if (form == null || form.IsDisposed)
        form = new OtherForm();
    form.Show();
}

我也发现form.Activate()有用,这样你就可以获得表格中的焦点

答案 2 :(得分:0)

您需要以第一种形式创建一个字段,该字段包含第二种形式的现有实例。

例如:

OtherForm form;

void Something() {
    if (form == null)
        form = new OtherForm();
    form.Show();
}

答案 3 :(得分:0)

  • Show创建后的表单,
  • Activate将表单带到前面的表单(如果您的应用在后台,则闪烁窗口标题)。这要求将Visible形式的属性设置为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();
        }
    }