防止显示一个表单的多个实例

Bro*_*die 7 c# forms window

我正在开发一个应用程序,其中有一个主要表单和几个可以同时使用的其他表单.当用户点击打开另一个表单时,我想使其单击表单按钮,如果表单已经打开,则不会再次打开表单.

showDialog不会工作,因为用户仍然需要访问主窗体上的控件.

这是我的帮助窗口代码,所有其他表单以相同的方式打开.

private void heToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form help = new help();
            help.Show();
        } 
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 13

或者,您可以使用应用程序的打开表单来查看它是否已打开

btn_LaunchHelp(object o, EventArgs e)
{

   foreach (Form f in Application.OpenForms)
   {
       if (f is HelpForm)
       {
           f.Focus();
           return;
       }
   }

   new help().Show();
}
Run Code Online (Sandbox Code Playgroud)

编辑:为了更清楚,这允许用户随时关闭帮助,并且比保存对"帮助"窗口的引用更容易管理.什么都没有清理,没有什么可以维护的.


mle*_*rle 10

使用单身人士:

class HelpForm : Form
{
   private static HelpForm _instance;
   public static HelpForm GetInstance()
   {
     if(_instance == null) _instance = new HelpForm();
     return _instance; 
   }
}

.......

private void heToolStripMenuItem_Click(object sender, EventArgs e)
{
     HelpForm form = HelpForm.GetInstance();
     if(!form.Visible)
     {
       form.Show();
     }
     else
     {
       form.BringToFront();
     }
}
Run Code Online (Sandbox Code Playgroud)