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

如何在WPF项目中使用FolderBrowserDialog实现文件夹选择功能

WPF 文件夹选择功能实现方案

方案1:使用Ookii.Dialogs.Wpf(推荐,原生WPF风格)

你当前的问题是混用了WinForm的对话框API和Ookii类库,Ookii有独立的调用逻辑,不需要依赖WinForm程序集,完整实现代码如下:

private void btnRadarFolder_Click(object sender, RoutedEventArgs e)
{
    // 直接使用Ookii提供的WPF原生文件夹对话框
    var dialog = new Ookii.Dialogs.Wpf.VistaFolderBrowserDialog();
    // 可自定义配置对话框描述、默认打开路径等属性
    dialog.Description = "请选择雷达数据存储文件夹";
    dialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    
    // ShowDialog返回可空布尔值,为true时代表用户点击了确认按钮
    if (dialog.ShowDialog() == true)
    {
        // 选中的文件夹路径直接从SelectedPath属性获取
        string selectedFolder = dialog.SelectedPath;
        // 后续业务逻辑写在这里,比如给路径文本框赋值
        // txtRadarFolderPath.Text = selectedFolder;
    }
}
  • 该实现打开的是系统原生的新版文件夹选择对话框,兼容Vista及以上系统,不会出现旧风格界面
  • 不需要引用任何WinForm相关程序集,不会出现类型冲突

方案2:继续使用WinForm的FolderBrowserDialog

如果你坚持使用旧版风格的对话框,需要先在项目中添加System.Windows.Forms程序集引用,完整代码如下:

private void btnRadarFolder_Click(object sender, RoutedEventArgs e)
{
    using (var dialog = new System.Windows.Forms.FolderBrowserDialog())
    {
        dialog.Description = "请选择雷达数据存储文件夹";
        System.Windows.Forms.DialogResult result = dialog.ShowDialog();
        // 直接匹配WinForm的DialogResult.OK枚举即可完成判断
        if (result == System.Windows.Forms.DialogResult.OK)
        {
            string selectedFolder = dialog.SelectedPath;
            // 后续业务逻辑写在这里
        }
    }
}
  • 该方案需要处理WPF和WinForm的类型冲突,仅当你必须兼容XP系统时使用

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:15:03