web-dev-qa-db-de.com

Kopieren von Winforms zwischen Projekten in Visual Studio

Was ist der beste Weg, um ein Formular aus einem Projekt in ein anderes Projekt innerhalb einer Lösung in Visual Studio zu kopieren oder ausschneiden/einfügen?

Bei jedem Versuch mit dem Lösungs-Explorer (Ziehen und Ablegen oder Rechtsklicken auf Ausschneiden und Vorbeifahren) werden nur der zugrunde liegende C # -Code und nicht die erforderlichen "Bits und Teile" kopiert, mit denen Sie das Formular über den Formular-Designer visualisieren können.

27
Vidar

Habe es herausgefunden - wusste, dass es etwas Dummes sein würde.

Anscheinend sollte das Zielprojekt die Referenzen haben:

  • System.Windows.Forms
  • System.Drawing

das Projekt sollte zu ERSTEN vor dem Kopieren oder Einfügen verwendet werden. Andernfalls wird das von mir beschriebene Problem angezeigt.

Danke für jeden, der versucht hat, BTW zu helfen.

9
Vidar
  1. Kopieren Sie die drei Dateien .cs, .designer, resx in den Zielordner der Lösung.
  2. Wählen Sie im Zielprojekt Add existing item aus und fügen Sie zuerst die Designer-Datei hinzu. 
  3. Ändern Sie das Namespace-Attribut. Die .cs-Datei sollte ebenfalls eingehen. 
  4. Ändern Sie den Namespace in der .cs-Datei.
  5. Fügen Sie die resx-Datei mit Add existing item hinzu.
40
MORGAN OLSON

Um ein Formular aus einem VS2013-Projekt in ein anderes zu kopieren, gilt Folgendes (am wenigsten Mausklicks):

  1. Klicken Sie in Ihrem Zielprojekt mit der rechten Maustaste auf Ihren übergeordneten Ordner (wahrscheinlich Ihr Projekt) und wählen Sie im Menü "Hinzufügen; Vorhandenes Element".

  2. Wählen Sie dann die cs-Datei des Formulars in Ihrem Quellprojekt aus. Wählen Sie beispielsweise Form.cs aus (nicht Form.Designer.cs oder Form.resx).

  3. Öffnen Sie Form.cs in Ihrem Zielprojekt und ändern Sie den Namespace (alle Instanzen).

  4. Schließen Sie Form.cs und öffnen Sie sie erneut. Sie sehen dann alle Steuerelemente usw.

15
Chris Patterson

Es ist jetzt in 2012 viel einfacher. Gehen Sie zu Datei> Hinzufügen> Vorhandenes Projekt> Ziehen Sie das Formular in das Projekt, zu dem Sie es hinzufügen möchten.

7
user3006071

Ich habe den folgenden Prozess in Visual Studio 2012 ausprobiert und es hat funktioniert.

  1. Fügen Sie das Projekt, aus dem Sie das Formular importieren möchten, zu Ihrer Lösung hinzu, indem Sie mit der rechten Maustaste auf Lösung> Hinzufügen> Vorhandene Projektmenüs klicken. Wählen Sie das Projekt aus und klicken Sie auf OK.
  2. Klicken Sie nun mit der rechten Maustaste auf das Formular, das Sie kopieren möchten, und wählen Sie "Kopieren".
  3. Klicken Sie mit der rechten Maustaste auf das Projekt, in das Sie kopieren möchten, und wählen Sie Einfügen.
  4. Das Formular wird in Ihr Projekt kopiert. Benennen Sie nun die Namespaces um.
  5. Entfernen Sie das in Schritt 1 hinzugefügte Projekt aus Ihrer Lösung.
3
Ram

Stellen Sie sicher, dass Sie nicht nur die Form.cs, sondern auch die Dateien Form.designer.cs und Form.resx kopieren.

Ich muss jedoch fragen, warum Sie eine Kopie desselben Formulars in mehreren Projekten in derselben Lösung beibehalten möchten. Klingt so, als ob Sie den Code darin verallgemeinern möchten, ihn in eine Klassenbibliothek legen und ihn an den Stellen wiederverwenden möchten, an denen er anwendbar ist.

3
Fredrik Mörk

Verwenden Sie ReSharper (Demo anfordern), klicken Sie mit der rechten Maustaste auf die Klasse in Codeansicht, Refaktor -> Verschieben, und verschieben Sie sie in ein anderes Projekt.

Der zusätzliche Vorteil besteht darin, dass alle Verweise automatisch aktualisiert werden, wenn Sie den Namespace ändern, indem Sie ihn zwischen Projekten verschieben.

3
Chris Doggett

Wenn Sie in derselben Maschine Formulare erstellen möchten, können Sie dies einfach tun.

Im Projektmappen-Explorer Projekt -> Hinzufügen -> Vorhandenes Element hinzufügen .

Wählen Sie nur die .cs (Sample.cs)-Datei aus dem Quellverzeichnis und aktualisieren Sie den aktuellen Lösungs-Explorer.

1
Anto sujesh

Für Visual Studio V.12 ist dies die einzige Methode, die für mich funktioniert hat (es ist eine Mischung aus obigen Einträgen):

  • Kopieren Sie die drei Dateien, aus denen das Formular besteht, über den Datei-Explorer.
  • Aktivieren Sie in der oberen Leiste des Lösungs-Explorers in Visual Studio "Alle Dateien anzeigen".
  • Die Datei file.cs wird grau angezeigt. Klicken Sie mit der rechten Maustaste und wählen Sie: "In Projekt einbeziehen". Der Lösungs-Explorer verknüpft automatisch die drei Dateien (.designer und .resx unter .cs-Datei). Die Datei file.cs ändert das Symbol von C++ in ein Formularsymbol.
1

Wenn Sie dasselbe Formular in verschiedenen Projekten verwenden müssen, lautet die Lösung: Erstellen Sie ein "Klassenbibliotheksprojekt". Fügen Sie zu diesem Projekt die Formulare hinzu, die Sie freigeben möchten, und fügen Sie dann einfach den Verweis auf die DLL zu Ihrem Hauptprojekt hinzu kann leicht auf Formulare verweisen. Es funktioniert perfekt für mich

0
Abrahan Pacheco

Mit VS2013 wurde dies gerade getestet und es erscheint zuverlässig und konsistent. Dies ähnelt einigen Kommentaren oben, fügt jedoch eine andere Methode hinzu, die schneller ist.

(1st) Markieren und kopieren Sie im Windows File Explorer alle 3 Formulardateien (.vb oder .cs, .designer, .resx).

(2nd) Dies kann auf zwei Arten erreicht werden:

(2a-1) Fügen Sie im Datei-Explorer die 3 Dateien zusammen mit Ihren anderen Formularen in den Projektordner ein

(2a-2) Aktivieren Sie im VS Solution Explorer "Alle Dateien anzeigen", klicken Sie mit der rechten Maustaste auf das eingefügte Formular und "In Projekt einbeziehen". Es sollte ohne andere Änderungen funktionieren.

Oder ich denke besser:

(2b-1) Klicken Sie in VS in den Projektmappen-Explorer und fügen Sie sie mit Strg-C ein. (Aus irgendeinem Grund zeigt das Kontextmenü im Projektmappen-Explorer möglicherweise keine Einfügeoption an, kann jedoch über die Tastatur ausgeführt werden.) Bei dieser Methode wird das Formular direkt dem Projekt hinzugefügt, ohne dass es wie oben beschrieben in "Projekt einschließen" erforderlich ist. Mit dieser Methode können Sie beliebig viele Formulare auf einmal (alle drei Dateien) in einem einzigen Schritt hinzufügen.

0
Alan

Wählen Sie die Datei aus oder verwenden Sie den Designer, um alle Steuerelemente zu "kopieren"? Wenn Sie die YourForm.cs-Datei im Projektmappen-Explorer auswählen und per Kopieren und Einfügen oder Ziehen und Ablegen in ein anderes Projekt kopieren, ist das, was Sie benötigen.

0
Adam Robinson

Ich verwende Visual Studio 2010. Nachfolgend sind die Schritte aufgeführt, die ich ausgeführt habe:

  1. Kopieren Sie alle 3 Dateien (.cs, .resx, .Designer.cs) in den Zielordner des Projekts.
  2. Klicken Sie in Visual Studio mit der rechten Maustaste auf Projekt -> Hinzufügen -> Vorhandenes Element ...
  3. Wählen Sie alle 3 Dateien (.cs, .resx, .Designer.cs) aus und klicken Sie auf Add .
  4. Ändern Sie den Namespace in 2 Dateien (.cs, .Designer.cs), wenn es sich beim Zielprojekt um einen anderen Namespace handelt.
  5. Führen Sie das Projekt aus.
  6. Erledigt!
0
LifeiSHot

Ich habe die folgenden Schritte ausprobiert und es hat gut funktioniert.

  1. kopieren Sie alle 3 Dateien und Symboldateien (falls vorhanden) in das Zielprojekt.
  2. Gehen Sie jetzt zu Ihrem Projektmappen-Explorer und klicken Sie auf das Symbol Alle Dateien anzeigen oben in sol.Explorer
  3. jetzt können Sie sehen, dass Ihre neu hinzugefügten Dateien in Ihrem Projekt angezeigt werden.
0
SaddamBinSyed

** Dieser arbeitet für mich:

1) Kopieren Sie die Quelldateien (.cs oder vb, .designer, .resx) in den Zielordner

2) Zeigen Sie versteckte Dateien in der Ziellösung an

3) Wählen Sie diese Dateien aus und fügen Sie sie in das Projekt ein.

Dadurch werden Winform oder andere teilweise unterteilte Dateien sauber hinzugefügt.

0
Nexus23

Klicken Sie in Visual Studio 2015 auf Solution Explorer und klicken Sie mit der rechten Maustaste auf Add-> Existing Item und wählen Sie aus einem anderen Projekt das Formular aus, das Sie wie Form.cs und automatisch Form.designer.cs hinzufügen möchten. Form.resx wird hinzugefügt

0
radhason power

Wenn Sie VS 2015 verwenden, müssen Sie nur die ".vb" -Datei hinzufügen und den Namensraum durch einen neuen Projektnamen ändern.

Beispiel: Sie möchten "Form1", das mit VS2008 erstellt wurde, zu einem neuen Projekt hinzufügen, das mit VS2015 erstellt wurde.

  1. Kopieren Sie alle ".vb" -Dateien, ".resx" -Dateien und ".disigner.vb" -Dateien in den neuen Projektordner.
  2. Ändern Sie dann den Namensraum der Datei ".disigner.vb" unter Verwendung des neuen Projektnamens.

Diese beiden Schritte haben bei mir funktioniert.

0
Kasun Hasitha