2016-03-01 55 views
1

我的班上有一个OpenFileDialog实例,就像这样。Windows窗体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。因此,确实没有一个形式的“拥有”对话框,它是统一游戏窗口。推送的按钮是游戏内的GUI元素。

感谢

+0

那么,这不应该发生。该对话框应该禁用拥有该按钮的窗口,以便您不能再次单击它。非常不清楚发生了什么,但使用ShowDialog(所有者)重载是非常重要的,所以您不要将它留给该类来找到所有者。它可能会选择错误的,然后你有这个问题。 –

回答

2

尝试:

Dialog.ShowDialog(this); 

这里假设this是他形成包含按钮。这应该将对话框显示为带有窗体的模式,因为它的主人会阻止您激活或使用该窗体上的控件,直到对话框被解除。

相关问题