2016-03-20 10 views
1

Ich habe zwei Formen, Form1 und Formular 2. Ich brauche eine Schaltfläche in Form1 von Form2, um den Zugriff auf das Datagridview in Form1 zu aktualisierenAufrufe eine Schaltfläche in einem Formular von einer anderen Form

diese Form1 ist:

private void BookLoad() 
    { 
     DataSet d = new DataSet(); 
     SqlCommand com = new SqlCommand("select * from Books ", cn); 
     SqlDataAdapter da = new SqlDataAdapter(com); 
     da.Fill(d, "Books"); 
     dataGridView2.DataSource = d; 
     dataGridView2.DataMember = "Books"; 

     DataSet ds = new DataSet(); 
     SqlCommand cmd = new SqlCommand("select * from Issue where StudentNumber LIKE @number", cn); 
     cmd.Parameters.AddWithValue("@number", textBox1.Text); 
     da = new SqlDataAdapter(cmd); 
     da.Fill(ds, "Issue"); 
     dataGridView1.DataSource = ds; 
     dataGridView1.DataMember = "Issue"; 

     DataSet dss = new DataSet(); 
     SqlCommand cmdd = new SqlCommand("select Books_Borrowed,Date_Borrowed,Return_Date,Quantity from Issue where StudentNumber = @number", cn); 
     cmdd.Parameters.AddWithValue("@number", textBox1.Text); 
     da = new SqlDataAdapter(cmdd); 
     da.Fill(dss, "Issue"); 
     dataGridView3.DataSource = dss; 
     dataGridView3.DataMember = "Issue"; 

    } 


    private void button2_Click(object sender, EventArgs e) 
    { 
     Form2 form = new Form2(); 
     form.Show(); 
    } 


    private void button10_Click(object sender, EventArgs e) 
    { 
     BookLoad(); 
     MessageBox.Show(); 
    } 

brauche ich Button10 von Form2 zugreifen

+0

Welche Aktion in 'Form2' möchten Sie verwenden, um' button10' in from1 auszulösen? –

+0

Wenn ich auf eine Schaltfläche in Form 2 klicke, wird es etwas tun und etwas in die Datenbank einfügen und sich dann verstecken. Ich muss auf Button10 zugreifen, um das Formular 1 zu aktualisieren – Nemo

Antwort

0

es scheint, dass Form2 eine Art eines Editierdialog ist. Es ist wirklich sollte keinen Zugriff auf die Kontrollen auf Form1 haben.

Viele einfache Sache ist Form2 als modal öffnen ShowDialog() Methode (Show Methode können Sie mehr öffnen Form2 wenn klicken button2 viele Male)

private void button2_Click(object sender, EventArgs e) 
{ 
    Form2 form = new Form2(); 
    DialogResult r = form.ShowDialog(); 
    if (r == DialogResult.OK) 
    { 
     BookLoad(); 
     MessageBox.Show(); 
    } 
} 
-1

Dies ist kein guter Ansatz, aber wenn Sie diese fügen Sie eine statische Funktion in Form1 tun wollte:

public static void btnDown(){ 
    SomeButton.Invoke(); 
} 

nun diese Funktion von Form2 nennen wie

Form1.btnDown(); 
1

Die erste, was zunächst wenig vorsichtig sein mit Hide() spielen und Show(), funktionieren einige Dinge möglicherweise nicht wie erwartet, wenn das Formular unsichtbar ist.

Eine ideale Lösung, um die Funktionalität, definieren ein Ereignis in Form2 und abonnieren auf dieses Ereignis in Form1

Deklarieren eines Stellvertreters in Form2 wie angegeben (Keep diese Logik in Form2)

public delegate void Listen(object sender, EventArgs args); 

// Expose the event off your component 
public event Listen ListenChange; 

Halten zu erreichen, Diese Logik innerhalb Button_Click Ereignis in Form2, kurz vor dem Ausblenden des Formulars.

// And to raise it 
if (ListenChange != null) 
{ 
    ListenChange(this, new EventArgs()); 
} 

Jetzt in Form1 abonnieren Sie dieses Ereignis und erhöhen Sie die Änderung.

Form2 form = new Form2(); 
form.ListenChange += (s, ev) => button10.PerformClick(); 
form.Show(); 
Verwandte Themen