有没有一种方法可以防止表单在#c中多次显示?

时间:2019-05-27 13:37:30

标签: c# forms

所以我有这个程序,我想防止它多次打开,但似乎无法解决它= /

    private void button1_Click(object sender, EventArgs e)
    {


        if (forge.Checked)
        {
            successfully_injected openForm = new successfully_injected();
            openForm.Show();
            this.Close();
        }
        else if (!forge.Checked)
        {
            select_option openForm = new select_option();
            openForm.Show();
        }

    }

我只希望能够单击一次按钮,然后它停止显示更多窗口,但是我现在得到的结果是我可以单击它,并且每次单击都会保持打开窗口的状态,所以== /

3 个答案:

答案 0 :(得分:0)

您可以检查Application对象中的集合OpenForms

if(forge.Checked)
{
   successfully_injected openForm = Application.OpenForms.OfType<successfully_injected>().FirstOrDefault();
   if(openForm == null)
       openForm = new successfully_injected();
   openForm.Show();
}
else
{
   select_option openForm = Application.OpenForms.OfType<select_option>().FirstOrDefault();
   if(openForm == null)
       openForm = new select_option();
   openForm.Show();
}
this.Close();

答案 1 :(得分:0)

您应将主表单定义为Singleton。这样,在整个应用程序中只有一个实例可用,因此还可以防止出现多种形式。

一个很好的例子可以在与您的here类似的另一个问题中找到。

答案 2 :(得分:0)

将所有者移至新窗口

    successfully_injected openForm = new successfully_injected();
        Owner = openForm;
        Hide();
        openForm.Show();

现在新窗口有了所有者,您只需关闭它即可使用