【问题标题】:WPF folder browser dialog that shows external devices and can navigate to user-given folder pathWPF 文件夹浏览器对话框,显示外部设备并可以导航到用户给定的文件夹路径
【发布时间】:2021-07-16 08:35:01
【问题描述】:

我有一个 WPF 应用程序,用户必须在其中选择一个文件夹进行操作。我通过在他单击按钮时打开文件夹浏览器对话框来实现这一点。

我希望对话框既能列出外部设备,如已连接的智能手机,又要有一个文本框,用户可以在其中输入文件夹的路径,并且对话框将能够导航到该文件夹​​,就像常规 Windows 对话框一样。

目前我有:

    FolderItem ShellBrowseForFolder()
    {
        Folder folder = shell.BrowseForFolder(Hwnd, "", 0, 0);
        if (folder != null)
        {
            FolderItem fi = (folder as Folder3).Self;
            return fi;
        }

        return null;
    }

我通过以下方式调用:

TargetFolderPath = ShellBrowseForFolder()?.Path;

这会产生一个如下所示的文件夹浏览器对话框:

此对话框列出了外部设备,但用户不能只输入“C:\some dir”并让对话框导航到它。

我也尝试过为IShellDispatch.BrowseForFolder 方法提供选项(根据these listed variants,在阅读the MSDN article 之后),如下所示:

Folder folder = shell.BrowseForFolder(Hwnd, "", 4, 0);

Folder folder = shell.BrowseForFolder(Hwnd, "", 0x00000004, 0);

但我没有注意到任何变化。

我的另一个对话框是:

readonly System.Windows.Forms.FolderBrowserDialog folderBrowser = new();

if (folderBrowser.ShowDialog() == DialogResult.OK)
    folderPath = folderBrowser.SelectedPath;

这会产生dis:

用户可以在其中输入文件夹的路径,但此对话框不显示外部设备,例如连接的智能手机。

有没有办法两全其美?

【问题讨论】:

    标签: c# wpf shell folderbrowserdialog


    【解决方案1】:

    你可以试试Ookii.Dialogs。 Ookii.Dialogs.VistaFolderBrowserDialog 应该做你想做的。

    【讨论】:

    • 感谢您的提示,即使它不是问题的答案,但我希望我的第 3 次派对是在本世纪完成的。
    • 不用担心,公平地说,这是 8 个月前更新的,支持 netcore 和 .net 5 -> nuget.org/packages/Ookii.Dialogs.Wpf。似乎也可以做你需要的一切。 :-)
    • 哦,谢谢!我看到那个网站上的最后一篇文章是 2017 年的,它需要 .Net Framework 3.5+,所以我认为这个人至少会更新他自己的网站。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2020-12-31
    • 1970-01-01
    相关资源
    最近更新 更多