"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

C# .. Daten zwischen Forms austauschen

XeroXs 02.06.2007 - 16:44 4734 4
Posts

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10300
Hallo erstmal

Also ich habe folgendes Problem.. Google konnte mir da auch nicht wirklich weiterhelfen, deshalb hoffe ich mal ihr habt eine Ahnung ;)

Hab ein einfaches Windows-Programm (ist nur zu Übungszwecken) auf Knopfdruck wird ein zweites Form geöffnet mit
Code:
Form2 zweitesformular = new Form2();
zweitesformular.Show();

soweit so gut.. in diesem form möchte ich jetzt etwas eingeben, und die Information zurückgeben ans erste Formular...

das Problem hier ist, ich kann nicht auf die daten (variablen etc) des ersten formulars zugreifen... (und ich kann auch nicht vom erstten auf zweite zugreifen, weil das event, das das form aufgemacht hat ja auch schon vorbei ist)

Vielleicht hat hier ja jemand Vorschläge/Anregungen?
Bearbeitet von XeroXs am 02.06.2007, 16:46

AoD

aka AngelOfDeath
Avatar
Registered: Nov 2002
Location: St. Pölten
Posts: 1482
Zuerst solltest du eine Trennung von Daten und UserInterface machen. Sprich ein dll Projekt für die Daten und ein WinForms Projekt.
Im Datenprojekt hast du dann nicht nur die Klassen mit den Daten sondern auch Manager die dir neue Objekte anlegen, löschen etc. Von jedem Managertyp gibt es genau eine Instanz (public static)
Und auf diesen greifen beide Forms zu.
Das Popup holt sich das Datenobjekt aus dem Manager und befüllt es. Das Hauptformular kann sich dann das selbe Objekt ebenfalls holen.

gue

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
Code:
zweitesformular.ShowDialog();
/* Hier kannst du die Felder von zweitesformular
   zugreifen weil es schon geschlossen wurde, z.B. so:
string val = zweitesformular.Name.Text;
*/

Meltdown

Bloody Newbie
Registered: Jun 2007
Location: Wien
Posts: 6
Wahrscheinlich ist die Methode von AngelOfDeath besser (ich code noch nicht so lange in .net;)
Jedoch mach ich das Folgendermasen:

Form2 zweitesformular = new Form2(this);
zweitesformular.Show();


und im form2 :

form1 f1 = null;
public form2 (f1)
this.f1= f1;

Ist höchstwahrscheinlich Pfusch aber die imho einfachste Methode :)

Wannabe2k

Little Overclocker
Registered: Feb 2003
Location: Austria
Posts: 111
also meiner ansicht nach is das wie du so schön sagst "pfusch" - es funktiniert zwar hat aber ned viel mit schönen programmierstil zu tun.

der "beste" weg da informationen auszustauschen ist mittels delegates und events die du zwischen den beiden fenstern einfach austauschst.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz