【问题标题】:Select folder dialog for WPF, with path entry field为 WPF 选择文件夹对话框,带有路径输入字段
【发布时间】:2011-05-22 08:55:45
【问题描述】:

众所周知,WPF 仍然不提供文件夹选择对话框(除非 WPF4 有一个我错过的对话框)。与此同时,我正在使用 System.Windows.Forms.FolderBrowserDialog。

不幸的是,这个对话框只有一个文件夹树、确定、取消和一个可选的“新建文件夹”按钮。可用性很差。特别是在尝试选择网络文件夹时非常糟糕。选择文件夹的唯一方法是扩展“网络”基础。在许多公司系统/网络上,这将开始很长的延迟并最终产生令人无法接受的长列表。

我想要一个允许用户在特定位置开始导航的文本输入字段.. 例如特定的计算机/文件夹.. 可以在文件浏览对话框中进行。

有人做过这样的事吗?这是扩展标准 System.Windows.Forms.FolderBrowserDialog 的一种方式,还是我必须自己创建?

谢谢。

【问题讨论】:

    标签: c# wpf winforms


    【解决方案1】:

    我认为你应该创建自己的,没有默认文件夹对话框实现这样的东西。如果我没记错的话,java也不允许这种可能性。

    我通常在可以手动写入路径的文本框附近创建“打开文件夹对话框”按钮(当使用确定按钮关闭文件夹对话框按钮时,只需填充该文本框),这是最简单的方法。

    应该创建您的对话类型,从好的方面来说,您至少可以出售它,因为它看起来不错且有用。或者你可以在网上找到类似的东西(顺便说一下以前的付款)。

    另一件事,所有文件夹对话框都非常慢,至少在 Windows XP 上,可能“不可能”减少这些延迟,你应该做一些搜索以避免这个问题(多线程对话框收集信息同时提供可能性开始浏览目录树是我唯一能想到的)。

    希望这会有所帮助

    编辑: 也许这有某种效用, http://www.ssware.com/fldrview.htm 它看起来很酷,但没有你想要的所有功能,我认为它并不像你希望的那样存在

    【讨论】:

      【解决方案2】:

      您包装原生代码并使用 SHBrowseForFolder 函数: http://msdn.microsoft.com/en-us/library/bb762115(v=vs.85).aspx

      或者从 Vista 开始,您可以使用创建一个 ID 为“CLSID_FileOpenDialog”的 COM 对象(也是本机代码): http://msdn.microsoft.com/en-us/library/bb776913(VS.85).aspx

      这两者都提供了一个文本输入区域,您可以在其中输入 UNC 路径。

      【讨论】:

        【解决方案3】:

        Vista Bridge 为新的 Vista 对话框提供托管包装器,并在旧操作系统上运行时提供回退支持。这些文件对话框比普通的 WPF 或 WinForms 更可取。

        Windows API Code Pack 为 Windows 7 功能提供托管包装器。

        【讨论】:

        • 这看起来很有希望。我下载了 Windows API 代码包,发现 CommonOpenFileDialog 有一个 IsFolderPicker 属性。如果已设置,它应该可以用作文件夹选择器。我怀疑我仍然需要为向后兼容性做一个后备。但是,事情就是这样。
        猜你喜欢
        • 2011-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-29
        • 2013-03-12
        • 2023-01-12
        • 1970-01-01
        相关资源
        最近更新 更多