【问题标题】:FolderBrowserDialog shows incorrect SelectedPath after new folder is being created and renamed创建和重命名新文件夹后,FolderBrowserDialog 显示不正确的 SelectedPath
【发布时间】:2016-04-11 06:57:12
【问题描述】:

在以下情况下,对话框将返回不正确的 SelectedPath:

  1. 显示后,单击新建文件夹按钮
  2. 输入新文件夹的名称
  3. 点击确定,**不按回车键

使用的代码:

   FolderBrowserDialog dialog = new FolderBrowserDialog();
   dialog.ShowDialog();
   Console.WriteLine(dialog.SelectedPath);

有什么建议可以克服这个问题并获得重命名的新文件夹的正确路径吗?

更新 我已经在 Windows 7、8.1 和 10 上对此进行了测试。它在 7 和 10 上是可重现的,而在 8.1 中它似乎可以正常工作。

【问题讨论】:

  • 我也有同样的问题。如果您找到解决方法,请传递!
  • 我用谷歌搜索并找到了解决方法。该人检查 SelectedPath 是否存在,如果不存在,则循环查找同一路径中的最新文件夹。不是一个理想的解决方案,但至少它有效!查看 pcreview.co.uk/threads/bug-in-folderbrowserdialog.2301005pcreview.co.uk/threads/bug-in-folderbrowserdialog.23010052015 年 10 月 6 日 Scott PRD 的评论
  • 我认为这不是可行的解决方案。如果另一个进程同时复制会发生什么。事情会变得一团糟。无论如何感谢您的信息。

标签: c# .net winforms winapi folderbrowserdialog


【解决方案1】:

我从 emoreau99 编写了建议的解决方法。丑陋但有效。

    public string GetPathFromFolderBrowserDialog()
    {
        var path = "";
        var fbd = new FolderBrowserDialog();

        if (fbd.ShowDialog() == DialogResult.OK)
        {
            path = fbd.SelectedPath;

            if (!Directory.Exists(path))
            {
                var lastCreatedDir = new DirectoryInfo(path).Parent
                    .GetDirectories()
                    .OrderByDescending(d => d.LastWriteTimeUtc)
                    .First();

                path = lastCreatedDir.FullName;
            }
        }

        return path;
    }

【讨论】:

    【解决方案2】:

    你能像这样打开对话框吗...

    DialogResult result = openFileDialog1.ShowDialog();
    

    并在使用属性SelectedPath之前检查结果

    if(result == DialogResult.OK) 
    

    【讨论】:

    • 我做了,还是一样。
    【解决方案3】:

    我在这里找到了正确答案:Problem with FolderBrowserDialog

    如果您明确设置属性 .ShowNewFolderButton = True,则 .SelectedPath 将正确返回更新后的新文件夹名称。

    这很奇怪,因为 .ShowNewFolderButton 默认为 True,但此解决方案为我解决了问题。

    【讨论】:

      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多