Maison  >  Article  >  développement back-end  >  Auto-apprentissage C#05 à partir de 0 - Accès mutuel entre les formulaires

Auto-apprentissage C#05 à partir de 0 - Accès mutuel entre les formulaires

黄舟
黄舟original
2017-02-04 10:40:331414parcourir

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). !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn