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

Visual Studio中如何为WPF项目添加Windows.Forms框架引用

WPF项目无法识别System.Windows.Forms命名空间的解决方法

问题原因

找不到Windows.Forms引用、添加了截图中选项也无法识别using System.Windows.Forms;的核心原因有两个:

  1. 网上多数旧教程针对的是.NET Framework版本的WPF项目,而现在Visual Studio默认创建的是.NET Core/.NET 5+的现代WPF项目,两者添加Windows Forms引用的逻辑完全不同
  2. 你截图里勾选的WindowsFormsIntegration是WPF嵌入WinForms控件用的互操作库,本身不包含System.Windows.Forms命名空间的相关类,加了也没法正常调用FolderBrowserDialog组件

分场景解决步骤

场景1:使用.NET Core 3.0+/.NET 5/6/7/8 现代.NET版本WPF(VS默认新建的WPF项目均为该类型)

不需要在引用管理器里手动找dll,按以下操作即可:

  • 右键解决方案资源管理器中的项目名,选择「编辑项目文件」
  • 在打开的csproj文件的<PropertyGroup>节点中,添加一行配置:
<UseWindowsForms>true</UseWindowsForms>
  • 保存文件后Visual Studio会自动完成引用还原,之后直接编写using System.Windows.Forms;就能正常识别,不需要额外操作。

场景2:使用.NET Framework版本的WPF项目

  • 打开引用管理器,左侧选择「程序集-框架」,在右侧列表下拉找到System.Windows.Forms,勾选后点击确定即可
  • 如果列表中找不到,就点击引用管理器右下角的「浏览」,手动定位到路径C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Windows.Forms.dll,选中添加即可。

文件夹选择对话框调用示例

引用添加完成后,可直接用以下代码唤起文件夹选择框:

using System.Windows.Forms;

// 在按钮点击等交互事件中编写以下逻辑
var folderDialog = new FolderBrowserDialog
{
    Description = "请选择需要操作的文件夹",
    ShowNewFolderButton = true // 控制是否允许用户在对话框中新建文件夹
};
// 显示对话框,判断用户是否点击了确定按钮
if (folderDialog.ShowDialog() == DialogResult.OK)
{
    string selectedPath = folderDialog.SelectedPath;
    // 此处编写拿到路径后的业务逻辑
}

更适配WPF的无依赖方案(可选)

如果不想引入WinForms的整套依赖,高版本WPF可以选择更原生的实现方式:

  • 方案1:通过NuGet安装Microsoft.WindowsAPICodePack-Shell包,用CommonOpenFileDialog实现文件夹选择,完全适配WPF的样式和交互逻辑
  • 方案2:.NET 8及以上版本WPF已经内置原生OpenFolderDialog组件,不需要引用任何额外库,直接在Microsoft.Win32命名空间下调用即可。

注意:所有对话框调用都要在WPF的UI主线程(STA线程)执行,默认创建的WPF项目已经满足该要求,不要在自行创建的MTA后台线程里直接弹出对话框,会触发线程兼容性错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:09:27