C# Windows窗体OpenFileDialog,如果对话框已显示,则阻止打开实例

C# Windows窗体OpenFileDialog,如果对话框已显示,则阻止打开实例,c#,windows,forms,C#,Windows,Forms,我的类上有一个OpenFileDialog实例,如下所示 public MyClass { public OpenFileDialog Dialog { get; set; } public MyClass() { Dialog = new OpenFileDialog(); } public void ShowDialog() { if (Dialog.ShowDialog() == DialogResult

我的类上有一个OpenFileDialog实例,如下所示

public MyClass
{
    public OpenFileDialog Dialog { get; set; }

    public MyClass()
    {
        Dialog = new OpenFileDialog();
    }

    public void ShowDialog()
    { 
        if (Dialog.ShowDialog() == DialogResult.OK)
        {
            DoStuff(Dialog.FileNames);
        }
    }
}
问题是,如果我点击按钮打开对话框3次,对话框将弹出打开一次。一旦我关闭第一个对话框,它将再显示两次。是否有任何方法可以检测对话框是否已经显示,以防止打开它

编辑:我也是从unity3d使用System.Windows.Forms的Mono版本的体验中使用这个。正因为如此,实际上没有一个窗体“拥有”对话框,它是unity游戏窗口。按下的按钮是游戏中的GUI元素

谢谢

试试:

Dialog.ShowDialog(this);

这里假设
这个
是包含按钮的表单。这应该将对话框显示为一个模态,窗体是它的所有者,在对话框被取消之前,阻止您激活或使用该窗体上的控件。

嗯,这是不应该发生的。该对话框应禁用拥有该按钮的窗口,以便您不能再次单击该按钮。非常不清楚这是如何发生的,但使用ShowDialog(owner)重载是相当重要的,这样就不会让类来查找所有者。它可能会选错一个,然后你就有这个问题。