嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们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);