【问题标题】:.NET Open File Dialog [duplicate].NET 打开文件对话框 [重复]
【发布时间】:2009-07-23 18:59:18
【问题描述】:

可能重复:
C# OpenFileDialog Non-Modal possible

我正在开发一个 C# Windows 窗体项目。当打开文件对话框时,我无法在 GUI 中选择它周围的任何内容。有什么方法可以打开 openfile 对话框,并且仍然可以在主 ui 上选择其他控件?

【问题讨论】:

标签: c# dialog


【解决方案1】:

标准的 OpenFileDialog 无法做到这一点。您需要自己制作,使用 Form 而不是 FileDialog 作为基类。这可以让您设计自己的非模态版本。

话虽如此,我建议不要这样做。在 Windows 中,文件对话框默认是模态的。人们期望你的应用程序有这种行为——所以改变它只会导致混乱和问题。这往往会降低您的应用程序的可用性并且对最终用户来说更加复杂,尽管这通常看起来是个好主意。

【讨论】:

    【解决方案2】:

    常见的对话框是模态对话框,根据定义,当它们处于活动状态时,它们不允许与进程中的任何其他窗口进行交互。因此,您的问题的答案是否定的,没有任何方法可以做到这一点。您必须使用第三方或自行创建的控件来滚动您自己的对话框才能与文件系统进行交互——这不是一项简单的任务。

    【讨论】:

      【解决方案3】:

      dban,

      OpenFileDialog 类不支持 Show 方法,该方法将在无模式状态下打开表单,即不锁定父级。

      据我所知,打开文件对话框的唯一方法是这样,它是模态的。 ShowDialog 方法以模态方式打开表单。

      OpenFileDialog dlg = new OpenFileDialog(); dlg.ShowDialog();

      如果您希望它以非模态方式打开,您可以编写自己的打开文件对话框类。

      但是你也应该考虑这是否真的有必要。通常,当用户看到一个文件打开对话框时,这是因为应用程序需要一个文件。在此期间,用户不应该对应用程序做任何其他事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-20
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-12
        • 2022-01-23
        • 2011-02-04
        相关资源
        最近更新 更多