C# Windows窗体OpenFileDialog,如果对话框已显示,则阻止打开实例
我的类上有一个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
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)重载是相当重要的,这样就不会让类来查找所有者。它可能会选错一个,然后你就有这个问题。