如何检查是否已启动非模态对话框

时间:2013-11-21 16:06:39

标签: c# .net winforms .net-3.5 non-modal

我的应用程序在按钮单击时启动非模态对话框。如果用户再次点击该按钮,我想检查该表格是否已经运行并想知道它是否可能?

2 个答案:

答案 0 :(得分:3)

您可以使用Application.OpenForms Property

if (Application.OpenForms.OfType<YourNonModalFormType>().Any())
   // one is already opened

如果您想关闭此表单:

var form = Application.OpenForms.OfType<YourNonModalFormType>().FirstOrDefault();
if (form != null)
{
    // launched
    form.Close();
}

答案 1 :(得分:0)

另一种方法是手动声明一个变量来跟踪表单实例:

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
    }

    private Form2 f2 = null;

    private void button1_Click(object sender, EventArgs e)
    {
        if (f2 == null || f2.IsDisposed)
        {
            f2 = new Form2();
            f2.Show();
        }
        else
        {
            f2.Close();
        }
    }

}