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

标签 c# windows forms

我的类(class)有一个 OpenFileDialog 实例,就像这样。

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

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

    public void ShowDialog()
    { 
        if (Dialog.ShowDialog() == DialogResult.OK)
        {
            DoStuff(Dialog.FileNames);
        }
    }
}

问题是,如果我多次点击按钮打开对话框,对话框只会弹出一次。关闭第一个对话框后,它会再显示两次。有什么方法可以检测对话框是否已显示以防止弹出对话框?

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

谢谢

最佳答案

尝试:

Dialog.ShowDialog(this);

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

关于c# - Windows 窗体 OpenFileDialog,如果对话框已经显示则阻止打开实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726995/

相关文章:

c# - 统一 - 在特定时间后改变场景

windows - 通过双击关联文件打开 C++ 程序。我如何获得文件名?

javascript - 表单不将数据保存到 mySQL 表中

javascript - 如何在react-final-form中传递null作为字段的初始值?

c# - 为什么简单的算术在没有强制转换的情况下不起作用?

c# - 自定义 OWIN CookieAuthenticationProvider 在第一次/冷启动时失败

c# - 以编程方式查找 .resx 文件中是否存在替代翻译

java - 哪个 native Windows 库处理文件、文件大小、创建日期? (与 JNI 一起使用)

windows - 运行.bat文件的命令

javascript - 如果表单内有任何内容被使用且不为空,则发出警报