公司网络上的FolderBrowserDialog选择子文件夹

时间:2016-01-27 09:38:05

标签: c# wpf winforms network-programming folderbrowserdialog

在我的WPF应用程序中,用户需要选择一个文件夹,该路径位于公司网络中。我使用System.Windows.Forms.FolderBrowserDialog并在按钮点击事件上执行以下代码:

        FolderBrowserDialog fbd = new FolderBrowserDialog();
        fbd.SelectedPath = "\\\\company.net\\data\\_Confidential";
        DialogResult result = fbd.ShowDialog();

FolderBrowserDialog on start

FolderBrowserDialog打开时,系统会自动扫描其他网络设备并导致以下问题:

FolderBrowserDialog after 3 seconds

网络树被其他设备填满,导致我的SelectedPath滚动。当用户开始搜索特殊的子文件夹时,这非常烦人,因为他必须向下滚动或者他的选择点击可能会击中新添加的设备(失去焦点)。

我该如何避免这个问题?

思想:

  • 我可以扩展/覆盖System.Environment.SpecialFolder枚举和 设置fbd.RootFolder = System.Environment.SpecialFolder.MySepcialNetworkPath;
  • 我应该使用其他对话框/控件访问网络文件夹吗?
  • 我应该删除视图中的“浏览...”Button,而是扫描整个\\\\company.net\\data\\_Confidential路径并提供组合框/其他选择控件(例如自己的子文件夹树)?

2 个答案:

答案 0 :(得分:0)

FolderBrowserDialog正在“采用”您的PC设置,具体取决于您的PC /网络上如何配置网络发现。通过这样做,您的文件夹浏览体验将与其他应用程序保持一致。

虽然您看到的是FolderBrowserDialog的默认行为,但您也可以看一下:https://stackoverflow.com/a/15440926/5793786解决了与您的问题类似的问题@Frank

答案 1 :(得分:0)

当我在寻找同样的问题时,我遇到了这个帖子:

How to use OpenFileDialog to select a folder?

用户使用Nuget包“WindowsAPICodePack-Shell”中提供的“CommonOpenFileDialog”。

这解决了我的问题,尽管它使用了OpenFileDialog接口。

然后可以浏览网络驱动器。