Variablen in einer zweiten Form freigeben

guanidin

Grünschnabel
Hallo,
vielleicht ist die Überschrift nicht ganz passend, wofür ich mich denn entschuldige.
Zu meinem Problem:
Ich habe zwei Formen (Form1 und Form2). Form2 wird mit ShowDialog() angezeig und zeigt Variablenwerte aus der Klasse Form1 an. In der Form2 möchte ich nun diese Variablenwerte verändern, was eigentlich auch klappt. Wenn ich dann die Form2 mit this.Close() beende und wieder neu aufrufe, werden wieder die alten Werte angezeigt.
Meine Frage:
Wie kann man die Form so beenden, dass alle Variablen freigegeben werden, so dass sich die Form2 die neuen Werte aus der Form1 hohlt?

MfG
Guanidin
 
Hi,

kannst du vielleicht ein wenig Code posten? Vor allem den Teil in dem du die Variablen an die Form2 von Form1 uebergibst.
 
Klar doch:
Code:
public class Form2 : Minesweeper.Form1
{
  //...
  nspace.Form1 test = new nspace.Form1();
  public int b_z_a;
  public int b_z_f;
  public int b_z_p;
  b_z_a = test.best_a;
  b_z_f  = test.best_f;
  b_z_p = test.best_p;
  //und den halt 
  this.label1.text = b_z_a.ToString(); //usw.
  //...
}
edit:
Nur die Codedarstellung verbessert.
 
Zuletzt bearbeitet:
Hi,

in deinem Code uebergibst du keine Variablen der Form1 an die Form2. Du erstellst lediglich eine Instanz der Form1. Wenn Form2 nun geschlossen bzw. zerstoert wird, wird natuerlich auch die Instanz der Form1 verworfen. D.h. deine ganzen Aenderungen an den Variablen gehen verloren.
Du braeuchtest in deiner Form1 von der du Form2 mittels .ShowDialog() aufrufst so etwas wie "Form2.ShowDialog(this)". Damit wuerdest du eine Referenz auf den Aufrufer der Form2 erstellen und die Variablen der Form1 direkt veraendern koennen.
Google doch mal nach "Variablenuebergabe zwischen Forms" oder sowas. Ich glaube das du hier im Forum auch einige Beitraege zu diesem Thema finden wirst.
 
Hallo erhart,
danke für die Antwort. Ich musste nur noch ein static vor die entsprechenden Variablendefinitionen setzen und es ging wunderbar.
Kurz noch zur Erklärung, wie (aufwändig) ich vorher die Variablen verändert habe:
Ich habe in der Form2 noch eine Bool-Variable auf true gesetzt, wenn die Werte verändert wurden und in der Form1 noch dem ShowDialog() den Bool-Wert abgefragt und denn die Ursprungsvariablen geändert. Das ging auch so, jedoch wurden diese neuen Werte beim erneuten Aufruf der Form2 nicht mehr gezeigt, sondern nur dann, wenn die Anwendung neu gestartet wurde.
 
Zurück