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

时间:2016-03-01 15:35:02

标签: c# windows forms

我的班上有一个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次,对话框将弹出一次。关闭第一个对话框后,它会再显示两次。有什么方法可以检测对话框是否已经显示以防止弹出它?

编辑:我也在使用Mono版System.Windows.Forms的unity3d体验中使用它。正因为如此,真的没有形式“拥有”对话框,它是统一游戏窗口。按下的按钮是游戏中的GUI元素。

由于

1 个答案:

答案 0 :(得分:2)

尝试:

Dialog.ShowDialog(this);

这里假设this是包含按钮的形式。这应该将对话框显示为带有表单的模式,因为它的所有者阻止您在该对话框被解除之前激活或使用该表单上的控件。