Heim > Artikel > Backend-Entwicklung > Selbststudium C#05 ab 0 – Gegenseitiger Zugriff zwischen Formularen
Ändern Sie im übergeordneten Formular den Status des CheckBox-Steuerelements, um das Unterformular zu öffnen und zu schließen. Nachdem Sie im untergeordneten Formular auf die Schaltfläche „Schließen“ geklickt haben, wird die Auswahl des CheckBox-Steuerelements des übergeordneten Formulars aufgehoben.
1. Methode
Hier verwenden wir die Delegat-Ereignismethode, um den gegenseitigen Zugriff auf Formulare zu realisieren.
2. Übergeordnetes Formular (Hauptformular)
Platzieren Sie 5 CheckBox-Steuerelemente im übergeordneten Formular. Und weisen Sie sie dem CheckBox[]-Array zu, damit der Code in einer Schleife aufgerufen werden kann.
CheckBox[] checkBox;public MainFormBERT() { InitializeComponent(); checkBox = new CheckBox[5]; checkBox[0] = this.checkBox1; checkBox[1] = this.checkBox2; checkBox[2] = this.checkBox3; checkBox[3] = this.checkBox4; checkBox[4] = this.checkBox5; }
Ereignisse zum CheckBox-Steuerelement hinzufügen. Und definieren Sie die Methode OpenOrCloseSubFormPPG(int i), um das Unterformular zu öffnen oder zu schließen. Diese Methode ruft das Ereignis des Unterformulars auf und verwendet die entsprechende RecvInfo(int number)-Methode, um das CheckBox-Steuerelement in den nicht ausgewählten Zustand zu versetzen:
subFormPPGTx[i].SendToParent += new SubFormPPG.SendFun(RecvInfo);
private void checkBox1_CheckedChanged(object sender, EventArgs e) { OpenOrCloseSubFormPPG(0); }private void checkBox2_CheckedChanged(object sender, EventArgs e) { OpenOrCloseSubFormPPG(1); }private void checkBox3_CheckedChanged(object sender, EventArgs e) { OpenOrCloseSubFormPPG(2); }private void checkBox4_CheckedChanged(object sender, EventArgs e) { OpenOrCloseSubFormPPG(3); }private void checkBox5_CheckedChanged(object sender, EventArgs e) { OpenOrCloseSubFormPPG(4); } SubFormPPG[] subFormPPGTx = { null, null, null, null, null};private void OpenOrCloseSubFormPPG(int i) { try { if (checkBox[i].Checked) { string formTitle, formName; if (i < 0 || i > 4) { throw new IndexOutOfRangeException("Channel is out of range"); } else if (i == 4) { formTitle = "ParallelWrite"; formName = "subFormPPG" + formTitle; } else { formTitle = "Tx" + i; formName = "subFormPPG" + formTitle; } if (subFormPPGTx[i] == null || subFormPPGTx[i].IsDisposed) { subFormPPGTx[i] = new SubFormPPG(); subFormPPGTx[i].Text = formTitle; subFormPPGTx[i].Name = formName; subFormPPGTx[i].Tag = i; subFormPPGTx[i].SendToParent += new SubFormPPG.SendFun(RecvInfo);//调用子窗体的事件 subFormPPGTx[i].Show(this); } else { subFormPPGTx[i].WindowState = FormWindowState.Normal; subFormPPGTx[i].Activate(); } } else { //subFormPPGTx[0].Close(); subFormPPGTx[i].Dispose(); subFormPPGTx[i] = null; } } catch (IndexOutOfRangeException ex) { MessageBox.Show(ex.Message); } catch (Exception ex) { MessageBox.Show(ex.Message); } }private void RecvInfo(int number) { this.checkBox[number].Checked = false; }
3 Unterformular
Hinzufügen das Ereignis SendToParent Wenn das untergeordnete Formular geschlossen wird, reagieren Sie auf das Ereignis und übergeben Sie die Informationen an das übergeordnete Formular.
public delegate void SendFun(int number); public event SendFun SendToParent; private void SubFormPPG_FormClosed(object sender, FormClosedEventArgs e) { if (SendToParent != null) { SendToParent((int)this.Tag); } }
Das Obige ist der Inhalt des Selbststudiums C#05 von 0 – gegenseitiger Zugriff zwischen Formularen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). !