Datenübergabe von einem form zum anderen
-
Das wäre der code. Bekommen tu ich wie gesagt nur die Default entries der Textfelder obwohl das doch zur Laufzeit ausgelesen werden können muß oder?
Da Du ja die Default Einträge bekommst gehe ich mal davon aus, dass eben diese Einträge nicht geändert wurden.
Wird denn deine form irgendwo gezeigt (from.Show() od. form.ShowDialog() oder form.Visible = true)?
Simon
-
Also:
In der Klasse Form1 gibt es ein formular mit einem Textfeld welches einen default Text hat. Hier gibt es auch die Methode getText1() welche den Ihnalt des Textfeldes zurückgibt (siehe oben).In der Klasse Form2 gibt es ein Forumlar welches ebenfalls ein Textfeld hat und einen Button. Bei click auf den Button wird folgender Code ausgeführt:
private void button1_Click(object sender, System.EventArgs e) { Form1 form = new Form1(); //instanz des ersten Forms erzeugen this.textBox1.Text = form.getText1(); //Textfeld des ersten Textfeldes auslesen }
Die Einträge im ersten Form ändere ich schon, da schreibe ich einfach was anderes hinein!!!!
Gibt es da sowas ähnliches wie updateDate(true) wie in C++??
lg
-
also weißt du im Konstruktor des Form1 den Wert zu und willst diesen gleich danach auslesen ?
Oder gibst du den Wert selber zu Laufzeit des Programms ein?
Wenn das der Fall sein sollte hast du einfach nicht die richtige
Instanze in der Hand denn mit
...=new Form1.. erzeugst du ja ein komplett neues Obj. was sich nicht auf
das Form bezieht was du eventuell zur Laufzeit siehst.
-
aja, das ist es!! Ich schreib da was zur Laufzeit hinein in das Textfeld. Wie erstelle ich also eine richtige Instanz?
-
die existiert schon irgendwo , wenn du sie zur Laufzeit siehst
ich vermute mal du hast die Form mit nen Designer gebastelt ....
eventuell macht dein Programm irgendwoApplication.Run(new Form1());
dann solltest du das, was mit new erzeugt wird in einen Memberspeichern
und dann an deiner Stelle draufzugreifen
-
OK, danke! Daran hab ich nicht gedacht das ich da eine völlig neue Instanz erzeige. Dachte das bezieht sich immer auf das gleiche Form. Wüßte grade nicht was das für einen Sinn haben soll wenn ich eine Instanz erzeuge welche nix mit dem gezeigten form zu tun hat....
danke nochmal.
lg
-
Wüßte grade nicht was das für einen Sinn haben soll wenn ich eine Instanz erzeuge welche nix mit dem gezeigten form zu tun hat....
Ich auch nicht.
Und:
Der Sinn von Klassen ist unter anderem: Eine Schablone (Klasse), eines oder mehrere Objekte (Instanzen).
-
hehe kein Problem
Am Anfang solltest du vielleicht auf die Verwendung von diesen Designerzeugs verzichten .... ist zwar ne super Erleichterung jedoch trägt es, wenn man eine Sprache erlernen möchte, nicht unbedingt zum Verständnis bei.
lg
-
ich nochmal:
keine Ahnung wie ich eine Referenz auf die ausführende Instanz bekomme?!?
das ist meine main methode:
static void Main() { Application.Run(new Form1()); }
-
Application.Current
-
ok noch mal kurz zum Verständins
... Form1 frm1 = new Form1(); Form1 frm2 = new Form1(); frm2.Show(); Form frm3 = new Form1(); frm3.Show(); Application.Run(frm1); ...
in jeder Variable hast du jetzt unterschiedliche Referenzen zu einer von den 3 Instanzen
des Fensters. Diese Referenzen könntest du nun, an die einzelnen Frames übergeben, in dem du bestimmte setFunktionen einbaust. Die dann frm1,..3 als Parameter mitbekommt.Und später dann beim Mausklick, in einen der Fenster, kannst du dann die anderen Fenster ansprechen.
oder wenn dir das mit der Setfunktion zu aufwendig ist kannst du halt direkt draufzugreifen mit:Application.OpenForms[tIndex]
Da du den Index aber wahrscheinlich nicht weißt musst du den Titel des Fensters übergeben
lg
-
Danke erstmal,
das mit den Instanzen hab ich eh verstanden.
Ich würde zum Beispiel die mainmethode von oben so abändern:static void Main() { Form1 a = new Form1(); Application.Run(a); }
somit habe ich in a die Referenz dieses Forms gespeichert.
Mir ist nur nicht klar wie ich jetzt dieses 'a' in das 2. Form bekomme??Was ist application.current ? Das gobts bei mir nicht so wie´s aussieht
-
Also um die Sache jetzt abzuschließen: Habe das Problem jetzt so gelöst:
Ich habe eine weitere classe erstellt "openClasses" in der ich von jedem offenen Fenster die referenzen speichere.
Über eine Instanz von openClasses kann ich dann auf jedes Fenster zugreifen
lg
wolf