无法使用System.Windows.Forms

Ram*_*uri 68 c# visual-studio winforms

我试过制作(我的第一个)C#程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello");
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这很顺利,但如果我尝试使用System.Windows.Forms:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello");
            System.MessageBox("hello");
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Error   1   The type or namespace name 'Windows' does not exist in the namespace     'System' (are you missing an assembly reference?)  C:\Users\Ramy\Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs  5   14  ConsoleApplication1
Run Code Online (Sandbox Code Playgroud)

一些细节: - 我正在使用Visual Studio 2012; - 我已经安装了.NET开发工具包; - 这是一个控制台应用程序.

也许是因为在控制台应用程序上无法使用System.Windows.Forms?如果是这样,应该是什么计划?我也试过一个表单,但我只显示一个窗口,没有代码.

Ken*_*rey 165

控制台应用程序不会自动添加对System.Windows.Forms.dll的引用.

在解决方案资源管理器中右键单击您的项目,然后选择添加引用...,然后找到System.Windows.Forms并添加它.

  • @JayImerman它的装配标签..对不起几年来不及. (5认同)
  • 好的,我在现有项目上遇到了这个问题。我认为项目文件已经被删除,所以我从头开始创建,覆盖并添加所有现有的类等文件。现在,当我转到“添加引用”时,“System.Windows”和“System.Windows.Forms”未在浏览对话框的“.Net”选项卡中列出。有任何想法吗? (2认同)
  • 答案对我也很有用(+1)但是是否可以在任何 c# 程序中永远添加 system.windows.forms 一次?使用您的答案,我们需要始终在任何新程序中执行此操作..... (2认同)
  • 是否可以使用“dotnet”cli 添加引用?例如,“dotnet add package System.Windows.Forms”不起作用:“错误:没有可用于包‘System.Windows.Forms’的版本”。 (2认同)

Sil*_*ght 107

对于使用 Visual Studio 2022 和 .Net Core 6.0 的用户

很抱歉恢复这个线程,但我创建了一个帐户只是为了这样做,因为我在谷歌搜索了几天发现的解决方案都不适合我一个人,而且似乎只提出过时的教程。

不工作=(

什么对我有用

  1. 双击您的项目(打开 csproj 编辑器窗口

添加以下行(替换现有的 TargetFramework 行):

<TargetFramework>net6.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
Run Code Online (Sandbox Code Playgroud)

我的窗口,仅供参考,如下所示:

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
      <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)
  1. 注意这两行!我读了几个解决方案/视频,它们在添加“UseWindowsForms”标签后就停止了,即使在卸载和重新加载/关闭和打开等之后,这也没有为我解决问题。

我在应用“UseWindowsForms”标签后偶然发现了这个解决方案,然后在绝望中将属性中的 NET 框架更改为 5.0,这导致它工作,然后注意到当改回 6.0 时它仍然工作。

如果以后忘记了 Framework 标签,只需来回翻转属性即可重现效果......

  1. 右键单击该项目,然后转到属性。

  2. 将目标框架从 .NET 6.0 ...更改为.... NET 5.0

  3. 退出回到您的代码。稍后将显示System.Windows.Forms 连接正确。

  4. 打开备份属性。

  5. 将目标框架从 .Net 5.0 更改回.Net 6.0

恭喜你

你有(或者至少我有)一个.Net 6.0项目,它可以正确地允许我使用System.Windows.Forms(包括剪贴板,我怀疑这里很多人都在寻找......)。

我对此进行了尽职调查,在多个项目中对其进行了多次测试,并且它(至少对于我的设置)始终有效!

顺便提一句。对于那些想知道的人。需要图片中看到的 [STAThread] 属性标签来允许 Clipboard 类发挥作用。(这也是我在示例中没有使用顶级语句的原因,但如果您不需要该类,则该示例适用于顶级语句(我需要它来显示我的剪贴板测试......)

  • 太感谢了。我使用 VS 2022 和 .NET 6 花了一些时间来解决同样的问题。添加“&lt;UseWindowsForms&gt;true&lt;/UseWindowsForms&gt;”解决了该问题。再次感谢。 (7认同)
  • 整个帖子可以简化为添加两个标签: &lt;TargetFramework&gt;net6.0-windows &lt;/TargetFramework&gt; &lt;UseWindowsForms&gt;true&lt;/UseWindowsForms&gt; (2认同)

ale*_*oot 20

您必须将命名空间的引用:System.Windows.Forms添加到项目中,因为由于某种原因它尚未添加,因此您可以从Visual Studio菜单添加新引用.

右键单击"参考"▶"添加新参考"▶"System.Windows.Forms"

  • 右键单击“引用”▶“添加新引用”▶`程序集`▶“System.Windows.Forms” (2认同)

Fen*_*nix 15

添加 System.Windows.Forms 引用需要 .NET Framework 项目类型:

我使用的是.NET Core项目类型。此项目类型不允许我们将程序集添加到其项目引用中。在将程序集添加到我的引用之前,我必须转移到.NET Framework项目类型System.Windows.Forms,如Kendall Frey 的回答中所述。

注意:System_Windows_Forms在 COM 选项卡下有可用的参考(适用于 .NET Core 和 .NET Framework)。这不是正确的。它必须System.Windows.Forms在程序集选项卡下。


Diz*_*zzy 15

如果您使用的是Visual Studio 2022,请打开项目属性并选中Windows.Forms - 为此项目启用 Windows 窗体设置。

在此输入图像描述


jor*_*rge 8

要添加对“System.Windows.Forms”的引用,Visual Studio Community 2017 似乎有点不同。

1)转到解决方案资源管理器并选择参考

在此处输入图片说明

2) 右键单击​​并选择添加引用 在此处输入图片说明

3) 在程序集中,检查 System.Windows.Forms 并按确定

在此处输入图片说明

4)就是这样。