Visual Studio中C# WPF项目无法使用System.Windows.Forms求助
解决WPF项目中System.Windows.Forms引用报错问题
一、先确认程序集引用的正确操作
针对不同.NET框架版本,引用方式有区别:
- .NET Framework 4.x项目:
右键项目 → 「添加」→「引用」→ 切换到「程序集-框架」标签,找到System.Windows.Forms和System.Drawing(通常需同时添加),勾选后确定。 - .NET 5/6/7/8等项目:
不能通过框架引用添加,必须打开NuGet包管理器,搜索System.Windows.Forms并安装官方包。
二、检查项目目标框架匹配
右键项目 →「属性」→「应用」标签页,查看目标框架:
- 若使用.NET Framework,确保引用的是框架自带的
System.Windows.Forms,不要误装NuGet包; - 若使用新版本.NET,必须通过NuGet安装,框架默认不包含WinForms组件。
三、推荐用WPF原生方式切换页面
你当前用的是WinForms的Form操作逻辑,不符合WPF设计规范,更合适的方案有两种:
1. 打开新的WPF窗口
如果Application_Main_MainPage是WPF Window类,直接用WPF自带API:
// 删除using System.Windows.Forms;这句 var mainWindow = new Application_Main_MainPage(); mainWindow.Show(); this.Close(); // 直接关闭登录窗口,避免后台残留进程
2. 单窗口内导航(更优雅)
在登录窗口的XAML里添加Frame控件:
<Frame x:Name="MainContentFrame" NavigationUIVisibility="Hidden"/>
登录成功后导航到目标页面:
MainContentFrame.Navigate(new Application_Main_MainPage()); // 可隐藏登录相关控件,或直接用Frame覆盖原有内容
四、仍报错的排查步骤
- 清理并重新生成项目:点击「生成」→「清理解决方案」,再点击「生成解决方案」;
- 检查引用状态:右键项目→「引用」,确认
System.Windows.Forms存在且无黄色感叹号(若有则重新添加引用); - 重启Visual Studio,缓存问题偶尔会导致引用识别异常。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

