You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 5 WinForms中FolderBrowserDialog显示异常,如何获取旧式文件夹选择对话框

问题原因

你遇到的两种对话框是Windows不同时期推出的原生文件夹选择控件:

  • 你期望的第一张图是Vista及更高版本Windows推出的新式资源管理器风格文件夹选择对话框,支持直接输入路径、快速访问栏跳转、搜索等功能
  • 实际弹出的第二张图是Windows XP时代就存在的旧版树状文件夹选择对话框,是.NET中FolderBrowserDialog的默认实现

这个差异不是.NET框架做了破坏性变更,是.NET出于向下兼容老旧系统的考虑,默认没有启用新式对话框。

调出第一种新式对话框的方案

根据你使用的.NET版本不同,对应方案如下:

  • 如果你使用的是 .NET Core 3.0 / .NET 5 及更高版本的WinForms:
    只需要给FolderBrowserDialog开启自动升级属性即可,修改代码如下:
    var fbd = new FolderBrowserDialog();
    fbd.Description = "test";
    fbd.ShowNewFolderButton = true;
    // 新增这一行,系统会自动适配调用新式对话框
    fbd.AutoUpgradeEnabled = true;
    if(fbd.ShowDialog() == DialogResult.OK)
    {
        // 原有业务逻辑
    }
    
  • 如果你使用的是 .NET Framework 版本的WinForms:
    默认FolderBrowserDialog没有公开启用新式对话框的开关,你可以选择两种实现方式:
    1. 引入微软官方的Windows API Code Pack组件,调用其中的CommonOpenFileDialog,设置IsFolderPicker = true即可调出新式文件夹选择框
    2. 自行封装Windows原生的IFileDialogCOM接口,指定为文件夹选择模式后调用

内容的提问来源于stack exchange,提问作者Damn Vegetables

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:45:05