VistafolderBrowserDialog不从正确的文件夹开始



我想为WPF使用文件夹浏览对话框,但是对于WPF来说似乎不是必需的类。

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

我尝试了ookii.dialogs.wpf.vistafolderbrowserdialog:

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

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

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

我不能再现。但是也许这里只是有些困惑。如果我这样做:

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

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

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

将在此精确文件夹中启动对话框,默认情况下什么都不选择。按下"确定"时,结果再次为" c: data"。

我最终使用CodePlex Project WPF本机文件夹浏览器:

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

wpffolderbrowser.wpffolderbrowserdialog-这是最适合我的!

我做了一个修复:函数errorhelper.hresultfromwin32(int)在按"选择文件夹"或" cancel"时生成system.OverFlowException(在.NET 4.5.1中运行)。

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

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

mcneight/wpffolderbrowser

最新更新