选择.NET 3.5的文件夹

Wil*_*lka 26 .net c# wpf winforms

在C#.NET 3.5应用程序(WinForms和WPF的混合)中,我想让用户选择一个文件夹来导入一大堆数据.目前,它正在使用,System.Windows.Forms.FolderBrowserDialog但有点蹩脚.主要是因为您无法在其中键入路径(因此您需要映射网络驱动器,而不是键入UNC路径).

我想要更喜欢的东西System.Windows.Forms.OpenFileDialog,但是对于文件夹而不是文件.

我可以用什么呢?WinForms或WPF解决方案很好,但如果我能避免它,我宁愿不要将PInvoke引入Windows API.

Che*_*eso 36

不要自己创造!它已经完成了.您可以使用FolderBrowserDialogEx - 内置FolderBrowserDialog的可重用衍生物.这个允许您输入路径,甚至是UNC路径.您还可以使用它浏览计算机或打印机.就像内置的FBD一样,但是......更好.

完整源代码.自由.MS-Public许可证.

FolderBrowserDialogEx

使用它的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是通常的借口吗?;-) (6认同)
  • 顺便说一句,我注意到,当对话框打开时,不会设置用户文件夹中任何内容的路径.例如,如果我像:dlg1.SelectedPath = C:\ Users\m00gs\Pictures \然后调用.ShowDialog(),我从为.RootFolder指定的文件夹开始.我的猜测是因为这是一个用户文件夹.有办法解决这个问题吗? (2认同)