在C#.NET 3.5应用程序(WinForms和WPF的混合)中,我想让用户选择一个文件夹来导入一大堆数据.目前,它正在使用,System.Windows.Forms.FolderBrowserDialog
但有点蹩脚.主要是因为您无法在其中键入路径(因此您需要映射网络驱动器,而不是键入UNC路径).
我想要更喜欢的东西System.Windows.Forms.OpenFileDialog
,但是对于文件夹而不是文件.
我可以用什么呢?WinForms或WPF解决方案很好,但如果我能避免它,我宁愿不要将PInvoke引入Windows API.
不要自己创造!它已经完成了.您可以使用FolderBrowserDialogEx - 内置FolderBrowserDialog的可重用衍生物.这个允许您输入路径,甚至是UNC路径.您还可以使用它浏览计算机或打印机.就像内置的FBD一样,但是......更好.
完整源代码.自由.MS-Public许可证.
使用它的代码:
var dlg1 = new Ionic.Utils.FolderBrowserDialogEx(); dlg1.Description = "Select a folder to extract to:"; dlg1.ShowNewFolderButton = true; dlg1.ShowEditBox = true; //dlg1.NewStyle = false; dlg1.SelectedPath = txtExtractDirectory.Text; dlg1.ShowFullPathInEditBox = true; dlg1.RootFolder = System.Environment.SpecialFolder.MyComputer; // Show the FolderBrowserDialog. DialogResult result = dlg1.ShowDialog(); if (result == DialogResult.OK) { txtExtractDirectory.Text = dlg1.SelectedPath; }