【问题标题】:C# WPF FolderBrowserDialog - Unable to retrieve the root folderC# WPF FolderBrowserDialog - 无法检索根文件夹
【发布时间】:2020-12-24 07:50:00
【问题描述】:

我正在使用 FolderBrowserDialog 来选择用户可以保存文件的文件夹。打开文件夹浏览对话框时,应用程序崩溃并引发以下异常。

   System.InvalidOperationException: Unable to retrieve the root folder.
   at System.Windows.Forms.FolderBrowserDialog.RunDialog(IntPtr hWndOwner)
   at System.Windows.Forms.CommonDialog.ShowDialog(IWin32Window owner)
   at TestApp.GenerateExcelReport()

当我的应用程序在 Citrix 环境中启动时,用户正在使用来自云的应用程序。因此,并非所有用户都面临这个问题,但很少有人面临。

string folderPath = "X:\\Reports";
if (!Directory.Exists(folderPath))
{
    Directory.CreateDirectory(folderPath);
}

FolderBrowserDialog folderDialog = new FolderBrowserDialog();
folderDialog.ShowNewFolderButton = true;
folderDialog.SelectedPath = folderPath;
DialogResult dialogResult = folderDialog.ShowDialog();
if (dialogResult == DialogResult.OK)
{
    folderPath = folderDialog.SelectedPath;
}
else
{
    return;
}

请提出在显示 FolderBrowseDialog 时出现此问题的根本原因。另外,建议可能的修复方法以防止出现此异常。

感谢和问候,

雇佣小伙子

【问题讨论】:

  • 我假设 X 是一个网络驱动器。也许它没有连接或被识别为连接?
  • 看来 Directory.CreateDirectory 没有抛出。该方法返回一个值,看看它是什么。它是网络映射驱动器吗?尽量不要设置 SelectedPath 属性。查看注册表中是否有此 Key 和 Value:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system -> "EnableLinkedConnections"=[DWORD]:00000001

标签: c# wpf folderbrowserdialog


【解决方案1】:

当文件夹 %USERPROFILE%\Desktop 不存在时,我会发生这种情况。创建该文件夹解决了这个问题。请注意,文件资源管理器可能会在%USERPROFILE% 中显示一个 Desktop 文件夹,即使 Desktop 实际上并不存在。您可以通过在cmd 中运行dir %USERPROFILE% 来验证Desktop 是否存在。

【讨论】:

    【解决方案2】:

    我迟到了,但如果您将 FolderBrowserDialogRootFolder 属性设置为默认 RootFolder 以外的属性,则可能会解决此问题。 例如

    FolderBrowserDialog folderDialog = new FolderBrowserDialog();
    folderDialog.RootFolder = Environment.SpecialFolder.MyComputer;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      相关资源
      最近更新 更多