C# - Formularinteraktion



  • Hallo!

    Ich bin Anfänger im Bereich C# bzw. OOP. Ich hab' mir nun 'ne MDI-Anwendung gebastelt und lasse im ParentWindow zwei Formulare anzeigen. Wenn ich nun im Formular1 in einer ComboBox etwas auswähle, soll diese Auswahl in einer Textbox im Formular2 angezeigt werden. Und ich bekomm's einfach nicht hin. Kann mir irgendjemand helfen???

    Vielen Dank,

    Exterminator



  • das ist eigentlich gar nicht so schwer.

    eine Möglichkeit wäre;

    1. in dem Formular1 wird ein Verweis auf Formular2
    2. wenn Formular1 geöffnet wird und Formular2 bereits offen ist oder umgekehrt, wird dieser Verweis gesetzt.
    3. im Formular2 deklarierst du deine TextBox als public oder besser erstellst eine Property/Method die deine Textbox füllt.
    4. im Formular1 muss du jetzt beim Auswählen prüfen, ob Verweis auf Formular2 gesetzt ist und, wenn ja, rufst die Methode des Formular2/setzt die Property, um die Textbox auszufüllen.

    P.S. Nicht zu vergessen: Wenn Formular2 geschlossen wird, muss im Formular1 Verweis auf Formular2 auch gelöscht werden.

    hier ist ein Bsp. http://www.genne-develop.com/temp/_sample_Formularinteraktion.rar



  • Hi

    Ich stehe vor dem gleichen Problem.
    Leider funtzt das Beispiel bei mir nicht. Sagt ungülitge Projektdatei 😕 !

    Wie erstelle ich denn einen Verweis. Ich habe in der MSDN mal gesucht - aber zu dem Thema nix gefunden.
    Wäre auch sehr dankbar.

    Gruß Soulfly



  • @Soulfly_2111

    Das Bsp. von Xqgene lässt sich mit dem VS problemlos öffnen.
    Alternativ kannst Du ja die einzelnen Code Dateien mit dem Notepad öffnen und anschauen.



  • Soulfly,

    Soulfly_2111 schrieb:

    Wie erstelle ich denn einen Verweis. Ich habe in der MSDN mal gesucht - aber zu dem Thema nix gefunden.

    Verweise bzw. Referenzen sind Variablen, die sich aus einer Speicheradresse und einem Typ zusammensetzten. Eine Referenz "zeigt" (wenn ungleich null) immer auf ein Objekt des entsprechenden Typs.

    MyForm form1 = new MyForm();
    MyForm form2 = new MyForm();
    form1.TheOtherForm = form2;
    

    form1, form2 und form1.TheOtherForm sind Verweise.
    Der eine oder andere Blick in ein Grundlagen-Buch sollte Dich da weiter bringen.



  • Hallo!

    Vielen Dank für deine Hilfe. Mit dem Quellcode war's echt ganz einfach nachzuvollziehen. Mittlerweile ist aber 'ne neue Frage aufgetaucht 🙄! Objekte sind ja Verweistypen. Angenommen ich habe ein Click-Event, dass irgendein Objekt erstellt. Wenn ich nun dieses Event zweimal auslöse (z.B. durch 2 Clicks auf 'nen Button), hab' ich dann

    - 2 Verweise auf 2 verschiedene Objekte im Heap oder
    - 2 Verweise auf dasselbe Objekt im Heap ???

    Falls ich zwei verschiedene Objekte habe, wie kann ich diese dann auseinanderhalten? Denn wenn sie z.B. durch das Click-Event so erstellt werden,

    objekt mein_objekt = new objekt();
    

    dann heissen ja beide Objekte "mein_objekt" 😕 😕 😕 , oder? Wie kann ich sie dann verschieden ansprechen

    Hmm...ich hoffe, die Frage ist nicht allzu bescheuert!

    Gruß,

    Exterminator



  • Hi,

    ein Klick Event, wie du es bezeichnest (ist eigentlich nicht ganz richtig), ist eine Methode, die von einem Delegate aufgerufen wird. Innerhalb der Methode wird nun das Objekt erzeugt. Soweit sollte alles klar sein.

    Sobald die Methode verlassen/beendet wird, wird das Objekt durch den GC zerstört. Wenn die Methode nun nochmal aufgerufen wird, wird ein neues Objekt erzeugt (das ist ja problemlos möglich, weil das alte zerstört ist).



  • Und wenn ich jetzt aber gar nicht will, dass der mein Objekt kaputt macht 😃 ?

    Wenn ich durch 'nen Click z.B. ein Formular erstelle und durch 'nen zweiten Click ein zweites Formular und mit beiden Formularen arbeiten will???



  • Exterminator,

    Exterminator schrieb:

    Objekte sind ja Verweistypen.

    Typen sind Klassen. Objekte sind Instanzen von Klassen.

    Exterminator schrieb:

    - 2 Verweise auf 2 verschiedene Objekte im Heap oder
    - 2 Verweise auf dasselbe Objekt im Heap ???

    Kommt drauf an. Befindest Du Dich am Ende des zweiten Durchlaufes des Ereignis-Handlers, dann: Eine Referenz auf ein Objekt (das gerade erzeugte)
    Hast Du den Ereignis-Handler durchlaufen: Keine Referenz (auf kein Objekt).

    Falls ich zwei verschiedene Objekte habe, wie kann ich diese dann auseinanderhalten?

    Indem Du zwei Variablen außerhalb des Handlers erstellst - also z.B. als Member.

    Exterminator schrieb:

    dann heissen ja beide Objekte "mein_objekt"

    Die Lebensdauer Deiner Objekte ist auf den Handler beschränkt.

    dschensky schrieb:

    Der eine oder andere Blick in ein Grundlagen-Buch sollte Dich da weiter bringen.


Anmelden zum Antworten