Laden...

Form1 nach Schließen von Form2 aktualisieren

Erstellt von Rico913 vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.232 Views
R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren
Form1 nach Schließen von Form2 aktualisieren

Hi,

ich möchte im Form2 (Form_Setup) den Nutzer die Einträge in ein Listenfeld vornehmen lassen, die im Form1 (Form_Main) angezeigt werden.
Speichern, Laden klappt alles - aber ich möchte, das Form beim Schließen von Form_Setup die Werte übernimmt - sprich Form_Main aktualisiert.

Dafür gibt es eine Anweisung die Form_Main aktualisiert -> public void LoadSettings()
Form_Setup schließe ich über Close().
Diese kann ich aber im Form_Setup nicht ansteuern bzw. laden - wie kann man diese Verbindung herstellen?

T
2.224 Beiträge seit 2008
vor 3 Jahren

Kannst du über FormClosing umsetzen.
Dann musst du nur beim anlegen deines Form_Setup Objekts einfach den Handler, den du in Form_Main anlegen musst, übergeben.
Dann musst du nur, wenn das Event aufgerufen wird, darin die Daten laden und anzeigen.

FormClosing

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Form_Closing verstehe ich, aber

Dann musst du nur beim anlegen deines Form_Setup Objekts einfach den Handler, den du in Form_Main anlegen musst, übergeben.
Dann musst du nur, wenn das Event aufgerufen wird, darin die Daten laden und anzeigen.

Das krieg ich noch nicht hin ... bin gerade am Einarbeiten. Wie übergebe ich diesen?

T
2.224 Beiträge seit 2008
vor 3 Jahren

Im einfachsten Fall sieht dass dann wie folgt aus.



// Form_Main.cs

private void Form_Setup_FormClosing(Object sender, FormClosingEventArgs e)
{
    // Hier deinen Code einfügen um die Daten zu laden und anzuzeigen!
}

private void Show_Form_Setup()
{
    Form_Setup setup = new Form_Setup();
    setup.FormClosing = Form_Setup_FormClosing;
    setup.ShowDialog();
}

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

4.939 Beiträge seit 2008
vor 3 Jahren

Nur bei einer nicht-modalen Form macht das FormClosing-Ereignis Sinn:


private void Show_Form_Setup()
{
    Form_Setup setup = new Form_Setup();
    setup.FormClosing = Form_Setup_FormClosing;
    setup.Show(); // <- nicht-modal
}

Bei einem modalen Dialog (mittels ShowDialog) kann man den Code ja direkt dahinter setzen, da diese Methode solange wartet, bis der Dialog wieder geschlossen wurde (am besten dann auch den Rückgabewert vom Typ DialogResult überprüfen).

Form_Setup liest sich für mich eher als ein modaler-Dialog (oder soll es möglich sein, mehrere davon gleichzeitig öffnen zu können?).
Und dann einfach


Form_Setup setup = new Form_Setup();
if (setup.ShowDialog() == DialogResult.OK)
  LoadSettings();

T
2.224 Beiträge seit 2008
vor 3 Jahren

@Th69
Macht es natürlich noch einfacher 😉
Hab mal wieder etwas zu kompliziert gedacht.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.