Maison > Article > développement back-end > Auto-apprentissage C#05 à partir de 0 - Accès mutuel entre les formulaires
Sur le formulaire parent, modifiez l'état du contrôle CheckBox pour ouvrir et fermer le sous-formulaire. Sur le formulaire enfant, après avoir cliqué sur le bouton de fermeture, le contrôle CheckBox du formulaire parent n'est plus sélectionné.
1. Méthode
Ici, nous utilisons la méthode de l'événement délégué pour réaliser un accès mutuel aux formulaires.
2. Formulaire parent (formulaire principal)
Placez 5 contrôles CheckBox sur le formulaire parent. Et affectez-les au tableau CheckBox[] afin que le code puisse être appelé en boucle.
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; }
Ajouter des événements au contrôle CheckBox. Et définissez la méthode OpenOrCloseSubFormPPG(int i) pour ouvrir ou fermer le sous-formulaire. Cette méthode appelle l'événement du sous-formulaire et utilise la méthode RecvInfo(int number) correspondante pour définir le contrôle CheckBox à l'état non sélectionné :
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 Subform
Add. l'événement SendToParent Lorsque le formulaire enfant est fermé, répondez à l'événement et transmettez les informations au formulaire parent.
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); } }
Ce qui précède est le contenu de l'auto-apprentissage C#05 à partir de 0 - accès mutuel entre les formulaires. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). !