c#,'Forms'在命名空间system.windows中不存在

时间:2011-07-10 05:47:04

标签: c# winforms

我刚刚开始研究c#,并且正在摆弄一些我从某个论坛获得的代码示例。

此代码使用的命名空间using system.windows.forms我收到错误:Forms does not exist in the namespace system.windows。此外,我收到一些与senddown&的未定义函数相关的错误。 sendup我相信它位于Forms名称空间。

我正在使用visual studio 10(使用.net框架工作4.0)。知道如何修复此错误吗?

感谢。

6 个答案:

答案 0 :(得分:109)

在解决方案树中展开项目,right click上的ReferencesAdd Reference,在System.Windows.Forms标签上选择Framework

有时需要添加对某些非默认程序集的引用。

答案 1 :(得分:4)

以防万一有人在尝试在.NET Core 3+ WPF应用程序中引用Windows Forms组件时遇到此错误(实际上并不罕见)。解决方案是进入.csproj文件(在VS2019中双击它),然后将其添加到包含目标框架的属性组节点中。像这样:

<PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWPF>true</UseWPF>
    <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

答案 2 :(得分:3)

网络 5

引用 Announcing .NET 5.0

<块引用>

Windows 桌面 API(包括 Windows 窗体、WPF 和 WinRT)仅在面向 net5.0-windows 时可用。您可以指定操作系统版本,例如 net5.0-windows7 或 net5.0-windows10.0.17763.0(适用于 Windows 2018 年 10 月更新)。如果您想使用 WinRT API,您需要以 Windows 10 版本为目标。

在您的项目中:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

也很有趣:

  • net5.0 是适用于 .NET 5.0 的新目标框架名称 (TFM)。
  • net5.0 结合并替换了 netcoreapp 和 netstandard TFM。
  • net5.0 支持 .NET Framework 兼容模式
  • net5.0-windows 将用于公开特定于 Windows 的功能,包括 Windows 窗体、WPF 和 WinRT API。
  • .NET 6.0 将使用与 net6.0 相同的方法,并将添加 net6.0-ios 和 net6.0-android。
  • 特定于操作系统的 TFM 可以包含操作系统版本号,例如 net6.0-ios14。
  • 可移植的 API,如 ASP.NET Core 将可用于 net5.0。使用 net6.0 的 Xamarin 表单也是如此。

答案 3 :(得分:1)

如果您是在 .Net Core 应用中编写 Windows窗体代码,则很可能会遇到此错误:

  

错误CS0234类型或名称空间名称'Forms'在名称空间'System.Windows'中不存在(您是否缺少程序集引用?)

如果您使用的是Sdk样式的项目文件(建议使用),则您的* .csproj文件应与此类似:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <OutputType>WinExe</OutputType>
    <UseWindowsForms>true</UseWindowsForms>
    <RootNamespace>MyAppNamespace</RootNamespace>
    <AssemblyName>MyAppName</AssemblyName>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Windows.Compatibility" Version="3.0.0" />
  </ItemGroup>
</Project>

请特别注意以下几行:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<OutputType>WinExe</OutputType>
<UseWindowsForms>true</UseWindowsForms>
<PackageReference Include="Microsoft.Windows.Compatibility" Version="3.0.0" />

答案 4 :(得分:0)

如果您在解决方案中有多个项目,并且其中一个物理位于解决方案文件夹中,则可能会遇到此问题。 我通过在解决方案树中的此文件夹上单击鼠标右键来解决此问题->然后按“从项目中排除”

exclude folder

答案 5 :(得分:0)

browxy.com 
Compilation failed: 1 error(s), 0 warnings
main.cs(7,24): error CS0234: The type or namespace name `Forms' does not exist in the namespace `System.Windows'. Are you missing `System.Windows.Forms' assembly reference?

browxy.com