嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 4 元微信扫码支付:4 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
基于委托实现多窗体相互通信,针对委托入门学习很好的例子。
	  //用来保存窗体
        private List<Form> frmList = new List<Form>();
        //创建多个子窗体
        private void btnCreateChildForm_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 3; i  )
            {
                FrmChild child = new FrmChild($"子窗体:{i   1}");
                child.Show();
                frmList.Add(child);
            }
        }
        //第4步:编写事件响应方法
        private void ReceiveMsg(string msg, string childName)
        {
            this.txtContent.Text  = $"来自:{childName} 的消息:{msg}\r\n";
        }
        #region 
        //清空消息
        private void btnClear_Click(object sender, EventArgs e)
        {
            this.txtContent.Clear();
        }
        //关闭全部
        private void btnCloseAll_Click(object sender, EventArgs e)
        {
            foreach (var item in frmList)
            {
                item.Close();
            }
        }
        #endregion
        //第5步:关联事件
        private void btnAddEvent_Click(object sender, EventArgs e)
        {
            foreach (FrmChild item in frmList)
            {
              item.passMsgEvent  = this.ReceiveMsg;
            }
        }
        //第5步:移除事件
        private void btnRemoveEvent_Click(object sender, EventArgs e)
        {
            foreach (FrmChild item in frmList)
            {
               item.passMsgEvent -= this.ReceiveMsg;
                //  item.passMsgEvent = null;  //这个是不行的   
               // item.passMsgEvent.invoke();//这种方式也不允许的           
            }
        }
    }
    //第1步:声明委托
    public delegate void PassMsgDelegate(string msg, string childName);