2017-05-23 6 views
-1

Ich versuche, Windows-Formular in MDIPARENT zu schließen, wenn ich auf andere Schaltfläche klicke, das Ergebnis ist, wenn ich auf andere Schaltfläche klicke, erscheint es immer noch von der Rückseite des neuen Fensters. Wie kann ich damit umgehen?Schließen Sie die vorherige Fensterform, wenn Sie auf andere Schaltfläche klicken

private void btn_ic_Click(object sender, EventArgs e) 
{ 

    pictureBox3.Visible = false; 
    SelectIC ss = new SelectIC(); 
    ss.MdiParent = this; 
    ss.Show(); 
    Detail aa = new Detail(); 
    aa.MdiParent = this; 
    aa.Close(); 
    btn_ic.Enabled = false; 
    btn_cat.Enabled = true; 

} 


private void btn_cat_Click(object sender, EventArgs e) 
{ 
    pictureBox3.Visible = false; 
    Detail aa = new Detail(); 
    aa.MdiParent = this; 
    aa.Show(); 
    SelectIC ss = new SelectIC(); 
    ss.MdiParent = this; 
    ss.Close(); 
    btn_cat.Enabled = false; 
    btn_ic.Enabled = true; 
} 
+1

'neue Detail()' gibt Ihnen nicht das vorhandene Fenster - es erstellt ein neues Fenster. Wenn Sie ein Fenster, das Sie zuvor erstellt haben, beeinflussen möchten, müssen Sie einen Verweis darauf beibehalten und damit interagieren. – Luaan

Antwort

0

Sie machen eine neue Instanz des Formulars und schließen es dann. Auf diese Weise schließen Sie kein vorhandenes Fenster, sondern erstellen ein neues (unsichtbares) Fenster und schließen es. Sie sollten das vorhandene Fenster in der Sammlung MdiChildren finden und es dann schließen. Etwas wie das:

private void btn_ic_Click(object sender, EventArgs e) 
{ 

    pictureBox3.Visible = false; 
    SelectIC ss = new SelectIC(); 
    ss.MdiParent = this; 
    ss.Show(); 

    var detailForm = this.MdiChildren.FirstOrDefault(f => f.GetType() == typeof(Detail)); 
    detailForm?.Close(); 

    btn_ic.Enabled = false; 
    btn_cat.Enabled = true; 

} 

private void btn_cat_Click(object sender, EventArgs e) 
{ 
    pictureBox3.Visible = false; 
    Detail aa = new Detail(); 
    aa.MdiParent = this; 
    aa.Show(); 

    var selectForm = this.MdiChildren.FirstOrDefault(f => f.GetType() == typeof(SelectIC)); 
    selectForm?.Close(); 

    btn_cat.Enabled = false; 
    btn_ic.Enabled = true; 
} 
+0

Sorry Sir .. wenn ich Code oben ausführen, geben sie Fehler .. die Nachricht "Objektreferenz nicht auf eine Instanz eines Objekts festgelegt." –

+0

@ashrafibrahim Ich habe meinen Code bearbeitet, versuche es jetzt. – Nino

+0

okay, Sir der Code funktioniert jetzt .. danke .. –

Verwandte Themen