C# 打开现有表单

C# 打开现有表单,c#,winforms,openform,newforms,C#,Winforms,Openform,Newforms,我有以下代码: private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e) { Form8 of = new Form8(); of.ShowDialog(); } 那个按钮打开我的表格8(好)。 但是如果我点击两次,表单就会重复,所以我得到了两个相同的表单8 当我第二次单击链接标签时,是否有人知道如果表单8已经打开,如何选择(放在前面)表单8。

我有以下代码:

  private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
  {
      Form8 of = new Form8();
      of.ShowDialog();
  }
那个按钮打开我的表格8(好)。 但是如果我点击两次,表单就会重复,所以我得到了两个相同的表单8

当我第二次单击链接标签时,是否有人知道如果表单8已经打开,如何选择(放在前面)表单8。
谢谢

ShowDialog()是模态的,它禁用应用程序中的所有其他窗口。因此,您不能单击“linkLabel1”。非常不清楚您做了什么。在显示对话框之前和之后,您始终可以禁用和重新启用链接标签。如果关闭了
Form8
(实例的
)该怎么办?它将抛出
ObjectDisposedException
。更改为检查已处置的formThat!=空条件是多余的,它永远不会为真,因为我们没有在任何地方设置空。是的,我知道这不重要,所以+1编辑被称为防御编程。如果另一个开发人员决定在另一个方法中设置of=null怎么办?
public class MainForm
{
    // Keep a reference to your popup form here, so you never create more than one instance
    private Form8 of = new Form8();

    private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
    {
        if (of != null && of.IsDisposed)
            of = new Form8();

        // Call Show(), not ShowDialog() because ShowDialog will block the UI thread
        // until you close the dialog.
        of.Show();
        of.BringToFront();
    }
}