Kommunikation zwischen 2 Windows Forms (VS 2008)
-
Hallo Leute,
ich bin neu hier also wenn ich was falsch gemacht habe beim Erstellen dieses Themas sagt mir bitte bescheid
Ich habe auch schon in Google und hier im Forum gesucht aber leider nicht genau das gefunden, was ich suche!
Folgendes Problem:
Ich hab in meiner Arbeit ein Projekt bekommen, welches ich ändern und verbessern soll.
Es ist alles in C++ programmiert, deswegen ist es schwer z.B. in C# umzusteigen.Mein jetziges Problem besteht darin:
- Ich habe eine Windows Form (Form1)
- Über einen Button wird eine zweite Form (Form2) erzeugt
- In Form2 werden Textfelder gefüllt und die Inhalte in Stringvariablen übergeben.
- Diese Stringvariablen sollen beim Klick auf einen Button in Form2 an die Form1 übergeben werden.Das Problem ist, dass ich es einfach nicht schaffe, dass ich in Form2 auf die Form1 zugreifen kann.
Beim Klick auf den Button in Form2 müsste irgendwie eine Methode in Form1 aufgerufen werden, die sich die Variablen holt.
Die Forms habe ich mit dem Designer aus Visual Studio 2008 erstellt, d.H. es sind beides .h-Dateien.
Ich habe bereits versucht es ohne Designer zu machen, indem ich .cpp-Dateien verwende und irgendwie über Headerdateien versuche, dass ich von der einen Form auf die andere zugreifen kann, was mir nicht gelungen ist.Ich hoffe, dass ihr versteht was mein Problem ist, ich bin leider sehr schlecht im Erklären!
Vielen Dank schonmal für eure Hilfe!
Liebe Grüße
Anna
-
Obligatorischer Link:
http://www.c-plusplus.net/forum/263084Desweiteren nehme ich mal an, dass die Vorhersage von Jochen Kalmbach
Deshalb entwicklen die meisten dann nicht mit C/C++, sondern mit C++/CLI, was eine komplett andere Sprache ist und für die meisten nur zu Verwirrung führt.
absolut richtig ist und verschiebe dich mal einfach auf Verdacht nach C++/CLI.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Neben dem Hinweis, dass es gar keinen Sinn macht, was Du vorhast...
http://www.c-plusplus.net/forum/167591
-
Danke erstmal für eure Antworten,
ich habe die beiden Links schon gelesen bevor ich dieses Thema erstellt habe.
@Jochen:
Warum soll dies keinen Sinn machen?
Ich öffne in der Form1 die Form2, gebe dort einige Sachen ein, und übergebe die Variablen zurück zur Form1, da in Form1 danach etwas dargestellt wird, wo ich diese Variablen brauche!
Du kannst mir aber gerne eine andere Möglichkeit vorschlagen
-
Anna_Bauer schrieb:
@Jochen:
Warum soll dies keinen Sinn machen?Ich bin zwar nicht Jochen, aber ich frage einfach mal zurück: Warum macht es denn Sinn ?
[*]In Visual Studio 2010 darf man in dem konfusen Code, den der Formulardesigner erzeugt, ohne Intellisense herumstolpern.
[*]In Visual Studio 2012 hat Microsoft gleich die Menupunkte zum Anlegen von Windows Forms Projekten entfernt.
[*]Windows Forms ist eine Legacy Technologie, die auf dem Stand von Visual Studio 2005 gehalten wird und nur minimale Erweiterungen erfährt.
[*]Wenn man ein Windows Forms Projekt in C# anlegt und seinen C++/CLI Code, so man ihn denn wirklich braucht, in ein Klassenbibliotheksprojekt packt, hat man (in VS 2012) in C# und C++/CLI schön funktionierende Intellisense.
[*]Man steckt mit dem C++/CLI Code in einer DLL nicht mehr in der Sackgasse Windows Forms fest, die gleiche Bibliothek kann man auch in einer WPF-Anwendung verwenden.
[*]Diese Art der mehrsprachigen Entwicklung ist auch sehr nah, an der Entwicklung von neuen Windows 8 Apps, da hat man auch XAML + C++ oder Html + JS + C++.
Wer mag, kann auch mit einer Bohrmaschine Nägel in die Wand schlagen und das gut finden. Die anderen Leute schütteln dann halt den Kopf.
-
Wie gesagt, ich habe gerade angefangen mich in ein bestehenden Projekt einzuarbeiten, ich hab nicht das nötige Wissen dazu das komplette Ding neu zu programmieren, sondern möchte es nur entsprechend ändern.
Da dieses Projekt mit Forms gemacht wurde, werde ich für diese kleine Änderung auch die Forms beibehalten.Danke für die Hilfe...
Hab das Problem inzwischen selbst gelöst!
-
Anna_Bauer schrieb:
Hab das Problem inzwischen selbst gelöst!
Wie sieht Deine Lösung aus?
-
Mein Problem was, dass ich die Form 2 mit
form2->Show();
anzeigen lies, wo aber der Programmfluss in Form 1 weiterläuft.
Ich habe dann die Methode ShowDialog() gefunden, wo in Form 1 erst weitergearbeitet wird, wenn Form 2 geschlossen wurde (ich habe Visible auf false gesetzt da sie später noch öfters verwendet wird).
Dann wird in Form 1 nach dem Aufrufform2->ShowDialog();
der Code weiterverarbeitet.
Über Getter-Methoden hol ich mir dann die Variablen.
-
Hallo Anna_Bauer,
ich hatte da mal was vor 5 Jahren geschrieben, deswegen habe ich nach Deiner Lösung gefragt.
http://www.c-plusplus.net/forum/260545?highlight=form1+form2
So würde ich es nach wie vor so machen.
Hier das kleine Projekt als Source (VS 2008)...
http://www.rb-softarticle.com/tstWinProjekt.rar
Gruß
Doug