在我的WPF应用程序中,用户需要选择一个文件夹,该路径位于公司网络中。我使用
System.Windows.Forms.FolderBrowserDialog
并在按钮单击事件上执行以下代码:
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.SelectedPath = "\\\\company.net\\data\\_Confidential";
DialogResult result = fbd.ShowDialog();
当
FolderBrowserDialog
打开时,系统会自动扫描其他网络设备,从而导致以下问题:
网络树被其他设备填满,导致我的
SelectedPath
滚动消失。当用户开始搜索特殊子文件夹时,这非常烦人,因为他必须向下滚动,否则他的选择单击可能会击中新添加的设备(失去焦点)。
如何避免这个问题?
想法:
System.Environment.SpecialFolder
枚举和
设置fbd.RootFolder = System.Environment.SpecialFolder.MySepcialNetworkPath;
Button
,而是扫描整个\\\\company.net\\data\\_Confidential
路径并提供组合框/其他选择控件(例如自己的子文件夹树)?FolderBrowserDialog 正在“采用”您的 PC 设置,具体取决于您的 PC/网络上的网络发现配置方式。通过这样做,您的文件夹浏览体验将与其他应用程序保持一致。
虽然您看到的是FolderBrowserDialog的默认行为,但您也可以看看这个:https://stackoverflow.com/a/15440926/5793786解决了与您的问题有点相似的问题@Frank
当我寻找同样的问题时,我遇到了这个线程:
用户使用 Nuget 包“WindowsAPICodePack-Shell”中提供的“CommonOpenFileDialog”。
这解决了我的问题,尽管它使用 OpenFileDialog 接口。
然后就可以浏览网络驱动器了。