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

CommonOpenFileDialog无InitialDirectory和Multiselect定义问题求助

问题原因

你遇到的属性不可用问题,是因为微软官方的Windows API Code Pack早已停止维护,现在NuGet上的Microsoft.WindowsAPICodePack-Shell都是社区fork维护的第三方版本,不同维护者的版本会修改属性命名、可用成员,和早年的旧教程接口不匹配。

对应版本文档查询渠道

  • 查看所安装NuGet包的项目主页:在NuGet包管理器中定位到你安装的Microsoft.WindowsAPICodePack-Shell包,右侧详情页的项目URL一般指向对应的GitHub仓库,仓库内的README、Wiki、示例代码就是对应版本的官方使用文档,接口差异以你所用版本的仓库说明为准。
  • 查看类定义:在IDE中将光标放在CommonOpenFileDialog类名上,按F12跳转到类定义,可直接查看当前版本所有公开的属性、方法、枚举值,核对你调用的成员名是否和当前版本匹配,比如部分版本IsFolderPicker改名为FolderPicker,Multiselect改名为AllowMultiSelect。
  • 参考Win32通用对话框官方文档:CommonOpenFileDialog本质是对Windows系统原生通用文件对话框的封装,微软官方的Win32通用对话框文档可以帮你理解底层功能逻辑,快速对应不同封装版本的接口差异。

兼容版示例代码(适配绝大多数社区维护版本)

private void Button_Click(object sender, RoutedEventArgs e)
{
     CommonOpenFileDialog dialog = new CommonOpenFileDialog("选择文件夹");
     dialog.InitialDirectory = @"C:\Users";
     // 若提示IsFolderPicker不存在则替换为 dialog.FolderPicker = true;
     dialog.IsFolderPicker = true;
     // 若提示Multiselect不存在则替换为 dialog.AllowMultipleSelection = true;
     dialog.Multiselect = true;
     if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
     {
         // 多选场景使用FileNames集合获取所有选中路径
         MessageBox.Show("你选中了: " + string.Join(",", dialog.FileNames));
     }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:27:03