基本信息
源码名称:基于委托多窗体实现(委托很好的入门学习)
源码大小:0.06M
文件格式:.rar
开发语言:C#
更新时间:2024-07-30
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 4 元 
   源码介绍

基于委托实现多窗体相互通信,针对委托入门学习很好的例子。

  //用来保存窗体
        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);