System.Windows.Forms kann nicht verwendet werden

76

Ich habe versucht, (mein erstes) ein C # -Programm zu erstellen:

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();
        }
    }
}

Das geht gut, aber wenn ich versuche, System.Windows.Forms zu verwenden:

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();
        }
    }
}

Dies ist der Fehler, den ich bekomme:

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

Einige Details: - Ich verwende Visual Studio 2012; - Ich habe das .NET Development Kit installiert. - Es ist eine Konsolenanwendung.

Vielleicht liegt es daran, dass in einer Konsolenanwendung System.Windows.Forms nicht verwendet werden kann? Wenn ja, welches Programm sollte es sein? Ich habe es auch mit einem Formular versucht, aber ich habe nur ein Fenster und keinen Code angezeigt.

Ramy Al Zuhouri
quelle
9
Manchmal sagen Ihnen Fehlermeldungen tatsächlich, was falsch ist: Ihnen fehlt eine Baugruppenreferenz.
Gewusst
2
Da dies nur Ihr erstes Programm ist, ist es besser, erneut zu starten und eine Windows Forms-Anwendung zu erstellen. Der VS2010-Projektassistent kümmert sich um viele Daten bezüglich der Verwendung von Windows-Formularen
Steve
8
Der erste Teil von dtbs Kommentar ist etwas unangebracht. Offensichtlich fehlt dem Fragesteller eine Baugruppenreferenz. Die Frage war, wie das Problem behoben werden kann, da die Fehlermeldung dies nicht verdeutlicht.
jmort253

Antworten:

178

Eine Konsolenanwendung fügt nicht automatisch einen Verweis auf System.Windows.Forms.dll hinzu.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt, wählen Sie Referenz hinzufügen ... und suchen Sie dann System.Windows.Forms und fügen Sie es hinzu.

Kendall Frey
quelle
1
OK, ich habe dieses Problem bei einem vorhandenen Projekt. Ich denke, die Projektdatei wurde abgespritzt, also habe ich alle vorhandenen Klassen- usw. Dateien von Grund auf neu erstellt, überschrieben und hinzugefügt. Wenn ich jetzt zu Referenz hinzufügen gehe, werden "System.Windows" und "System.Windows.Forms" nicht auf der Registerkarte ".Net" des Suchdialogs aufgelistet. Irgendwelche Ideen?
Jay Imerman
7
@ JayImerman ist unter Baugruppen Registerkarte .. Entschuldigung ein paar Jahre zu spät.
DCorrigan
2
Die Antwort war auch für mich nützlich (+1), aber ist es möglich, system.windows.forms in jedem c # -Programm einmal für immer hinzuzufügen? Mit Ihrer Antwort müssen wir dies immer bei jedem neuen Programm tun .....
Mostafa Ayaz
21

Sie müssen die Referenz des Namespace: System.Windows.Forms zu Ihrem Projekt hinzufügen, da sie aus irgendeinem Grund noch nicht hinzugefügt wurde, sodass Sie im Visual Studio-Menü eine neue Referenz hinzufügen können.

Klicken Sie mit der rechten Maustaste auf "Referenz" ▶ "Neue Referenz hinzufügen" ▶ "System.Windows.Forms"

aleroot
quelle
1
Klicken Sie mit der rechten AssembliesMaustaste auf "Referenz" ▶ "Neue Referenz hinzufügen" ▶ ▶ "System.Windows.Forms"
Steve Smith
7

Um den Verweis auf "System.Windows.Forms" hinzuzufügen, scheint es für Visual Studio Community 2017 etwas anders zu sein.

1) Gehen Sie zum Lösungs-Explorer und wählen Sie Referenzen aus

Geben Sie hier die Bildbeschreibung ein

2) Klicken Sie mit der rechten Maustaste und wählen Sie Referenzen hinzufügen Geben Sie hier die Bildbeschreibung ein

3) Aktivieren Sie in Baugruppen System.Windows.Forms und drücken Sie OK

Geben Sie hier die Bildbeschreibung ein

4) Das war's.

Jorge
quelle
4

Für das Hinzufügen der System.Windows.Forms-Referenz ist der .NET Framework-Projekttyp erforderlich:

Ich habe den .NET Core- Projekttyp verwendet. Mit diesem Projekttyp können wir keine Baugruppen zu den Projektreferenzen hinzufügen. Ich musste zum .NET Framework- Projekttyp wechseln, bevor ich System.Windows.Formsmeinen Referenzen Assembly hinzufügen konnte , wie in der Antwort von Kendall Frey beschrieben .

Hinweis: Auf der System_Windows_FormsRegisterkarte COM ist eine Referenz verfügbar (sowohl für .NET Core als auch für .NET Framework). Es ist nicht der richtige. Es muss sich auf der System.Windows.FormsRegisterkarte Baugruppen befinden.

Fenix
quelle
0

Stellen Sie sicher, dass der Projektmappen-Explorer in MS Studio 2008 sichtbar ist. Gehen Sie zur Ansicht und klicken Sie auf Projektmappen-Explorer

Gehen Sie im Projektmappen-Explorer zu Referenz. Klicken Sie mit der rechten Maustaste auf Referenz und wählen Sie Referenz hinzufügen. Wählen Sie die Registerkarte .NET. Scrollen Sie nach unten, bis Sie System.Drawing finden -> wählen Sie es aus -> klicken Sie auf OK. Machen Sie dasselbe für System.Windows.Forms

Wenn Sie Ihr Formular ausführen, funktioniert dies

(Eddie lebt irgendwo in der Zeit)

Nur Augen
quelle
0

Fügen Sie einfach einen Verweis auf System.Windows.Forms.dll hinzu

Moayad Myro
quelle
0

Gehen Sie zum Seitenprojektfenster, klicken Sie mit der rechten Maustaste auf Referenzen -> Referenz hinzufügen und suchen Sie System.Windows.Forms

Jedes Mal, wenn ein Fehler wie dieser auftritt (ein von Ihnen hinzugefügter Namespace fehlt, der offensichtlich vorhanden ist), ist die Lösung wahrscheinlich folgende: Hinzufügen einer Referenz.

Dies ist erforderlich, da Ihr Standardprojekt nicht alles enthält, da Sie es wahrscheinlich nicht benötigen, um Platz zu sparen. Es empfiehlt sich, Dinge auszuschließen, die Sie nicht verwenden.

Bojidar Stanchev
quelle
0

kann notwendig sein, Unreferenzsystem.Fenster.Formen und Referenz erneut.

R. Alonso
quelle