Links:
Kommunikation zwischen zwei Forms
MVC (Model-View-Controller Pattern mit ASP.NET)
Der Thread Wie von einer WIndow-Form auf die GUI-Elemente einer anderen Window-Form zugreifen? zeigt sehr schön, was man alles an Fehlern und schlechten Designansätzen vermeiden kann und sollte.
Und in Vorüberlegung zur Form2Form-Kommunikation: Programm-Design überdenken wird die Frage behandelt: "Brauche ich wirklich ein GUI mit mehreren unabhängigen Forms?".
Hallo zusammen,
dies ist keineswegs der einzige Thread zu dem Thema - im Gegenteil. Kaum ein Thema wurde so oft und ausführlich besprochen, wie dieses. Es gibt auch Threads zu dem Thema, in denen Codebeispiele enthalten sind.
Gute Suchbegriffe für die Forensuche sind:
Form1 Form2
je nach Geschmack noch garniert mit ShowDialog (weniger mein Geschmack) oder Closed/FormClosed bzw. Closing/FormClosing (mehr mein Geschmack).
Wenn man vorhat, Oberflächen- und Modellobjekte zu trennen, was mittlerweile Standard ist, könnten folgende Threads ganz hilfreich sein: [Artikel] Drei-Schichten-Architektur sowie Zugriff auf Steuerelement aus Klasse, Codebeispiel in Zugriff auf Steuerelement aus Klasse.
herbivore
PS: Hier noch ein Artikel auf codeproject.com zu dem Thema: Passing Data Between Forms
PPS: Von thomas.at stammt die folgende, hilfreiche Visualisierung der unterschiedlichen Arten des Zugriffs, je nachdem in welche Richtung der Zugriff erfolgen soll.
Form1 Form2
+-------+ +-------+
| | direkt über Properties und Methoden | |
| |----------------------------------------->| |
| | | |
| | | |
| | indirekt über Events | |
| |<-----------------------------------------| |
+-------+ +-------+
Dazu noch folgende Hinweise:
new Hauptform ()
zuzugreifen, darf man sich nicht wundern, wenn das eigentliche Hauptform von den Änderungen in diesem neuen (unsichtbaren) Hauptform-Objekt nichts mitbekommt.Auch noch ein Link (mit Codebeispiel) zu diesem Thema
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Hallo Ratsuchender,
was tun, wenn dir alle diese Infos und auch die Forumssuche nach Form1 Form2 noch nicht geholfen hat?
Bitte mach keinen neuen Thread auf, denn:
In den hier genannten Threads und über die Forumssuche findest du alle Informationen, die ihr brauchst! Wir könnten in dem neuen Threads auch nichts anderes oder neues schreiben! Und die allgemeine Beschreibung auf dein konkretes Problem zu übertragen, ist in unseren Augen eben genau deine Aufgabe.
Wenn es mit deiner Herangehensweise nicht funktioniert, kann das auch daran liegen, dass deine Herangehensweise ungünstig oder ungeeignet ist. In diesem Fall solltest du dich besser auf einen der beschriebenen Ansätze einlassen.
Wenn der Code trotzdem nicht tut, was er deiner Meinung nach tun sollte, stelle alle deine Annahmen, die du getroffen hast, infrage. Oft genug kommt man gerade deshalb nicht weiter, weil man annimmt, dass der Fehler an einer bestimmten Stelle oder an einer bestimmten Ursache auf keinen Fall liegen kann, aber gerade genau dort liegt. Überlege, welche Codestellen und Fehlerquellen du gedanklich ausgeschlossen hast, und prüfe, wenn du nicht weiterkommst, genau diese (erneut und) unvoreingenommen.
Wenn alle Stricke reißen, probiere, ob du mit [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden weiterkommst.
Und wenn das alles noch nicht hilft, liegt es vermutlich daran, dass dir ein paar Grundlagen der objektorientierten oder der Windows-Programmierung fehlen. Diese Grundlagen eignest du dir am besten an, indem du ein gutes Buch durcharbeitest (siehe auch [FAQ] Wie finde ich den Einstieg in C#? und Buchempfehlungen). Ein Forum kann keine Einführung in die (Windows-)Programmierung ersetzen und auch nicht leisten.
In diesem Sinne viel Erfolg!
herbivore
Hier noch ein typisches Problem:
Form verliert den Focus und springt in den Hintergrund...
Nachtrag:
Wenn mehrere Forms gleichzeitig bearbeitbar sein sollen, so müssen die Forms NICHT Modal angezeigt werden. (Show statt ShowDialog)... und man kann sich dann in FormClosing oder FormClosed Event einklinken um allfällige Werte eines sich schliessenden Forms wieder auf das aufrufende Form zu übertragen.
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...