C# Kommunikation zwischen zwei Forms

Nicolon

Newbie
Registriert
Juni 2010
Beiträge
4
Hallo zusammen,

Ich habe folgendes Problem:

Ich habe zwei Formulare. Form1 zur Anmeldung und in Form2 das eigentliche Hauptprogramm.

Wenn ich in Form1 auf so eine Art <Login> Button klicke soll das Anmelden Formular (Form1) sich schließen und das nächste Formular (Form2) sich öffnen. Soweit so gut.

Nur habe ich durch die Anmeldung zwei Objekte in Form1 erstellt. Ich habe z.B ein Objekt der Klasse Personal in der Form1 angelegt nun soll auf Form2 oben links sowas stehen wie (Eingeloggt als <Personal.Name>).

Das Problem ist nun: Wie schaffe ich es. Obejekte die ich in Form1 angelegt habe, in der Form2 verwenden kann? (Meine Ideen: Ne Art Sessions oder Konstruktoren oder Dummiklassen)

Bitte helft mir Syntaxtechnisch ein wenig auf die Sprünge :))

Gruß Nicolon ;)
 
Na Du übergibst die Referenz auf das Objekt.

Entweder über eine öffentliche Methode oder über eine öffentliche Property
 
Es gibt an sich zig Lösungen für das Problem... aber was sinnvoll ist oder nicht für deinen Fall, kann man kaum sagen, ohne genauer zu sehen wie und wann welche Objekte instantiiert werden usw...

Je nach Fall reicht es, die Daten der Form2 im Konstruktor zu übergeben wie du sagst, holen könnte man sie von Form1 über sogenannte get-Methoden oder auch in Form von Properties...
 
du überschreibst die ShowDialog- oder Show-Methode. Leider kann man nicht wie in VB Shadows verwenden, das heißt die alte Definition ist immernoch sichtbar. Du rufst dann Form 2 mit deiner neuen Methode auf. In die Parameterliste dieser Methode kannst du dann die entsprechenden Parameter aufrufen.

Ach ja: intern muss natürlich die alte Methode aufgerufen werden.

z.b:

Code:
public override DialogResult ShowDialog(<meine Parameter)
{
   //mein Code zur Verarbeitung der Parameter
   return base().ShowDialog();
}

ich bin mit der C#-Syntax snicht so sicher...
 
Eine öffentlich Methode?

An welcher Stelle des Projektes oder des namespaces lege ich diese an?
Und in wie fern unterscheidet sich eine normale Methode mit einer öffentlichen von der Syntax her?

Gruß Nicolon
 
Na wenn ich von öffentlichen Methoden rede, meine ich "public void Method (var AParam) {}"
Für so Fälle gibts aber Properties, sprich "public var Property { get; set; }"

Aber wie schon erwähnt wurde, das kannst Du machen wie Du möchtest :P
 
Zuletzt bearbeitet:
Danke für die schnellen Antworten,

allerdings obwohl es "zig Lösungen" gibt bin ich leider noch keinen Schritt weiter gekommen.
An welcher Stelle muss ich die Methode machen? Oder ist das egal weil sie eh public ist? Sowas hatte ich eigtl. schonmal versucht jedoch tuachte die Methode nicht in der IntelliSense auf.

89474731.png

Ergänzung ()

Okay ich habe es nun mit public Properties gelößt.
Danke nocheinmal für eure Beiträge :)
 
Scheisse, das kann doch keiner lesen :P

Wie rum Du das machst, bleibt Dir überlassen.
In Deinem Fall würde es sich anbieten die in/aus Form 1 erstellten Objekte (also die Referenz darauf) über eine Property/Methode(Setter) in Form 2 zu übergeben. So kannst Du diese direkt nach dem Erzeugen von Form 2 übergeben - von mir aus auch im Konstruktor, das kommt auf den Aufbau deiner Anwendung an.
 
Zuletzt bearbeitet: (Hab grad gemerkt, dass Du es ja schon gelöst hast :P hf)
Zurück
Oben