【问题标题】:Windows Forms OpenFileDialog, prevent opening instance if dialog already showingWindows 窗体 OpenFileDialog,如果对话框已经显示,则阻止打开实例
【发布时间】:2016-03-01 23:43:58
【问题描述】:

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

编辑:我也是通过使用 System.Windows.Forms 的 Mono 版本的 unity3d 体验来使用它的。因此,实际上并没有“拥有”对话框的形式,而是统一的游戏窗口。按下的按钮是游戏内的 GUI 元素。

谢谢

【问题讨论】:

  • 嗯,这不应该发生。该对话框应禁用拥有该按钮的窗口,因此您无法再次单击它。非常不清楚这是怎么发生的,但是使用 ShowDialog(owner) 重载是相当重要的,因此您不要让班级来寻找所有者。它可能会选错一个,然后你就会遇到这个问题。

标签: c# windows forms


【解决方案1】:

试试:

Dialog.ShowDialog(this);

这里假设this 是包含按钮的表单。这应该将对话框显示为具有窗体的模式,因为它的所有者会阻止您激活或使用该窗体上的控件,直到对话框被关闭。

【讨论】:

    猜你喜欢
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    相关资源
    最近更新 更多