Hallo,
wenn Du uns nicht verrätst, wie Du es versucht hast, können wir natürlich nicht konkret antworten, sondern nur allgemein:
Variante 1 mit ShowDialog-Methode
C#-Quelltext
1: 2: 3: 4: 5: 6:
| using(Form2 form = new Forms()) { if (form.ShowDialog() == DialogResult.OK) { } } |
Variante 2 mit Show-Methode und FormClosing-Ereignis
Zuerst muss außerhalb der Klassen ein eigener
Delegate mit bestimmten Argumenten definiert werden.
Dann muss in
Form1 (!) eine
Methode entsprechend diesem Delegate erstellt werden. Die macht irgendetwas innerhalb von Form1 und benutzt dazu die festgelegten Argumente.
In
Form2 wird eine
Variable gemäß dem Delegate deklariert. Über einen speziellen Konstruktor oder eine Init-Methode erhält diese Variable den Wert der Methode von Form1:
in Form1:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| internal void DelegateInstance(params values) { ... } using(Form2 form = new Forms()) { form.Init(DelegateInstance); form.Show(); } |
in Form2:
C#-Quelltext
1: 2: 3: 4: 5:
| private MyDelegate setParameter; public void Init(MyDelegate instance) { setParameter = instance; } |
Im
FormClosing-Ereignis von Form2 wird diese Methode aufgerufen:
C#-Quelltext
"values" habe ich nur als Kurzschreibweise für die Argumente benutzt, die Du konkret haben willst.
Ich hoffe, diese Informationen bringen Dich weiter. Beide Verfahren werden in den von Sebastian genannten Links genauer erläutert.
Gruß und Frohes Neues Jahr! Jürgen
Nachtrag, nachdem mittlerweile Deine Ergänzung gekommen ist:
Bei diesem Code in Form2 wird mir immer schlecht (das kann ich auch bei Anfängern nicht verstehen):
Zitat: |
C#-Quelltext 1: 2: 3:
| Form1 frmeins = new Form1(); frmeins.frmls = this; this.Close(); | |
In Form2 erzeugst Du innerhalb einer Methode ein neues Form1, machst irgendetwas damit, am Ende wird Form2 geschlossen, und damit ist alles, was innerhalb dieser Methode deklariert wurde, wieder futsch. Bitte mitdenken!