选择WPF的文件夹对话框,带有路径输入字段

时间:2010-12-08 17:09:49

标签: c# wpf winforms

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

不幸的是,此对话框只有一个文件夹树,OK,Cancel和一个可选的“Make New Folder”按钮。可用性很差。特别是,在尝试选择网络文件夹时很糟糕。选择该文件夹的唯一方法是扩展“网络”基础..在许多公司系统/网络上,它将开始长时间的延迟并最终产生一个不可接受的长列表。

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

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

感谢。

3 个答案:

答案 0 :(得分:1)

Vista Bridge为新的Vista对话框提供托管包装,并在旧操作系统上运行时提供后备支持。这些文件对话框最好是库存WPF或WinForms文件。

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

答案 1 :(得分:0)

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

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

你应该创建你的对话框类型,好的方面你至少可以卖掉它,因为它看起来不错而且乐于助人。或者也许你可以在网上找到类似的东西(顺便提一下以前的付款方式)。

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

希望这会有所帮助

修改 也许这有一些实用性, http://www.ssware.com/fldrview.htm 它看起来很酷,但没有你想要的所有功能,我认为它不存在,因为你希望

答案 2 :(得分:0)

您包装本机代码并使用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路径。