C#委托详解(附代码)

1、主窗体接受信息,其他窗体发送信息:

把其他窗体的信息发送给主窗体,主窗体接受信息,并显示,需要在主窗体
中声明委托,由于是在主窗体接受并显示,所以要在主窗体中根据委托定义
一个方法,然后在其他窗体中创建这个委托对象,让这个委托对象去实现信
息的传递,当然,还需要在主窗体中把对象和具体的方法关联起来,不然怎
么知道具体用哪一个方法去实现。
在主窗体中:

namespace delegateApp1
{
 public partial class FrmMain : Form
{
    FrmOther objFrm = new FrmOther();
    public FrmMain()
    {
        InitializeComponent();
        //FrmOther objFrm = new FrmOther();
        //5.将从窗体的委托变量和主窗体的对应方法关联
        objFrm.msgSender = this.Receiver;//msgSender为副窗体中的委托对象,为委托对象关联方法
        //objFrm.Show();
    }
    //2.根据委托定义方法
    private void Receiver(string counter)
    {
        //可以再次编写复杂任务处理 
        this.lblCounter.Text = counter;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        objFrm.Show();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        objFrm.Close();
    }
}
//1.声明委托,根据委托的实际需求定义,声明在类的外部
public delegate void showCounterDelegate(string counter);

}

在其他窗体中:

 public partial class FrmOther : Form
{
    public FrmOther()
    {
        InitializeComponent();
    }
    //3.根据委托,创建委托对象(记录信息)
    public showCounterDelegate msgSender;
    private int counter = 0;
    private void button1_Click(object sender, EventArgs e)
    {
        counter++;
        if (msgSender != null)
        { 
            msgSender(counter.ToString());
        }
       
    }
 }

2、主窗体发送信息,其他窗体接受信息:
无论是主窗体是发送还是接收,都是在主窗体中声明委托这是第一步。

第二步是根据委托创建具体的实现方法,由于从窗体是信息接收者,所以具体的实现方法要在从窗体中实现(这是第二步,根据委托定义一个具体
的实现方法)。

第三步是创建委托对象,谁是消息发出者谁需要去寻找一个第三者去实现信
息的传递工作,由于主窗体是信息的发出者,当然由他去找这个第三者,所
以在主窗体中委托一个对象去实现信息的传递工作。

第四步:传递人有了但是要告诉这个传递人具体的实现方法,不然你让他去
说啥,所以第四步就是把委托对象和具体的方法关联起来,在主窗体中实现。

第五步:就是调用委托变量去传递信息,也就是告诉你找的这个帮你传话的人去吧去帮我告诉他。然后这个帮你传话的人就根据你所说的具体的方法(说什么和谁说)去实现信息的传递。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值