Funktion in einem anderen Form auslösen

manuel774

Grünschnabel
Hey,
ganz grob:
ich habe ein "MainForm" indem ich eine MySQL Tabelle darstelle.
Die Verbindungsdaten dazu stehen in einer TextDatei.
In einem 2ten Form, welches ich aus dem MainForm starte, kann ich die Verbindungsdaten ändern.

Mein Problem ist jetzt wenn ich das 2te Form schliese möchte ich das die Tabelle auf dem MainForm aktualisiert wird... Wie ich das mache ist mir auch klar allerdings müsste ich dafür beim schliesen des 2ten Forms eine Funktion im MainForm aufrufen...

Wie mache ich das?

Dachte an etwas wie:

Code:
        private void button_Save_Click(object sender, EventArgs e)
        {
            SaveMySqlConnectionString();
            MainForm.UpdateTable();
            Close();

wobei "MainForm.UpdateTable();" eine Funktion im MainForm ist die die Verbindungsdaten neu einliest und die Tabelle aktualisiert...

Jemand n Tip?

Danke schonmal
 
Prinzipiell schon richtig. Es gibt zwei ansätze: du öffnest die zweite Form modal und wartest bis sie geschlossen wird, dann kannst du deine Update-Methode bequem aus dem Code der MainForm aufrufen. Alternativ machst du die Funktion "UpdateTable" öffentlich sichtbar, das heißt mit Modifier "Public" oder "Friend" und rufst sie aus dem Code der zweiten Form heraus auf. Dazu brauchst du aber eine Instanzvariable auf deine MainForm.

Variante 1: modaler Aufruf:
Code:
public class Form1 {
    
    private void ZeigeForm2Modal() {
        Form2 neueForm2 = new Form2();
        neueForm2.ShowDialog();
        UpdateTable();
    }
    
    private void UpdateTable() {
        // irgendwas tun
    }
}
Variante 2: Public Sub:
Code:
public class Form1 {
    
    private void ZeigeForm2() {
        Form2 neueForm2 = new Form2();
        neueForm2.Show();
    }
    
    public void UpdateTable() {
        // irgendwas tun
    }
}

public class Form2 {
    private void Button1_Click(object sender, System.EventArgs e) {
        My.Forms.Form1.UpdateTable();
    }
}

Edit: Ich merke gerade dass My.Forms natürlich nur in VB verfügbar ist und nicht in C#. Aber der Ansatz dürfte klar sein, oder?
 
Zuletzt bearbeitet:
Ah super Danke!
ich machs jetzt mit dem modalen Aufruf...

Code:
        private void editConnectionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frm_EditDBConnection frmEditDBConnection = new frm_EditDBConnection();
            frmEditDBConnection.ShowDialog();
            UpdateTable();
            
        }

hatte das neue Form vorher mit
Code:
frmEditDBConnection.Show();
aufgerufen
und mich die ganze Zeit gewundert weshalb der die nachfolgenden Befehle sofort aufruft anstatt zu warten bis das Form geschlossen ist...
Aber das ist dann wohl der unterschied zwischen "Show" und "ShowDialog"...

Danke
 
Zurück