VistaFolderBrowserDialog不以正确的文件夹开头

时间:2014-02-03 21:39:44

标签: c# wpf folderbrowserdialog

我想为WPF使用文件夹浏览对话框,但WPF似乎没有这样一个必要的类。

有人建议使用System.Windows.Forms.FolderBrowserDialog,但这是一个非常糟糕的对话。

我尝试了Ookii.Dialogs.Wpf.VistaFolderBrowserDialog

Ookii.Dialogs.Wpf.VistaFolderBrowserDialog dlg = new VistaFolderBrowserDialog();
dlg.SelectedPath = path;
dlg.ShowDialog();

但设置SelectedPath时,对话框打开时不会设置启动文件夹,这对我的程序至关重要。

如何在正确的文件夹中打开VistaFolderBrowserDialog

3 个答案:

答案 0 :(得分:5)

我无法重现这一点。但也许这里只有一些混乱。如果我这样做:

        var dialog = new VistaFolderBrowserDialog();
        dialog.SelectedPath = @"C:\Data";
        dialog.ShowDialog();

它将在“C:”中启动并选择文件夹“数据”。按OK时,结果为“C:\ Data”。但是,包括最后的反斜杠:

        var dialog = new VistaFolderBrowserDialog();
        dialog.SelectedPath = @"C:\Data\";
        dialog.ShowDialog();

将在此确切文件夹中启动对话框,默认情况下不选择任何内容。按“OK”时,结果再次为“C:\ Data”。

答案 1 :(得分:2)

我最终使用了Codeplex项目WPF Native Folder Browser

WPFFolderBrowser.WPFFolderBrowserDialog dlg = new WPFFolderBrowserDialog();
dlg.InitialDirectory = path;
bool? pathWasSelected = dlg.ShowDialog();
string selectedPath = null;
if(pathWasSelected == true) 
    selectedPath = dlg.FileName;

答案 2 :(得分:0)

WpfFolderBrowser.WpfFolderBrowserDialog - 这是最适合我的那个!

我做了一个修复但是: 按下"选择文件夹"时,函数ErrorHelper.HResultFromWin32(int)会生成System.OverflowException。或"取消" (在.NET 4.5.1中运行)。

要修复,我将有问题的代码放在未经检查的块中:

unchecked
{
  win32ErrorCode =
      (int)((win32ErrorCode & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000);
}

McNeight/WpfFolderBrowser