C#委托 解决跨线程报警

1委托和房产中介的作用是一样的。

2委托和c语言的函数指针差不多。但c语言的函数指针给了函数地址后,只能调用一次。不能像数组那样绑定多个函数地址。C#的委托却可以。

3你可以理解委托是C语言  函数指针的 升级版

4 委托是变量,它的数据类型是方法。 int num=33; 那num是int类型。委托是方法类型;

理解房产中介的交易,你就能学会怎么使用委托了。

1中介就是委托 delegate 这个对象就是在他们2个人都认识的地方,那肯定就在公共区域,类外声明委托

namespace Gossip
{
    public delegate void WT();//全局变量:  委托

2我们的目的是什么?子窗体想去调用主窗体内的方法。这就相当于我要买房,我是不是要去中介找个业务员啊。public delegate void WT();   这个中介有了,那业务员呢?在子窗体定义一个属性。主窗体new出子窗体,是可以访问这个属性的。

namespace Gossip
{
    public partial class Form11串口 : Form
    {
        #region  //全局变量
        public WT wt;//委托用于  子调用父  

3这个小wt就是业务员。它一直有买房子的需求,那卖家是谁呢?这时在主窗体里,新建子窗体

   private void button1_Click(object sender, EventArgs e)//主窗,串口
        {
            Form11串口 f1= new Form11串口();//串口新 窗体
            f1.wt += () => { this.Show(); };//委托
            f1.Show();//子窗显示
            this.Hide();//主界面隐藏
        }

主窗体就相当于卖家,它把自己的一套房子卖给业务员wt;这主窗体里的某个方法就是一套房子。

用+=去绑定。

4这时我们回到子窗体。我子窗体运行完要关闭了,想显示主窗体。

        private void Form10编码_FormClosed(object sender, FormClosedEventArgs e)
        {
            wt();//委托   显示主窗
        }

子窗体调用了这个业务员,那业务员绑定的是什么功能呢?我们去主窗体看下:

f1.wt += () => { this.Show(); };//委托

这个this.Show();的功能是显示主窗体;

5补充

委托的类型和绑定方法的签名必须一致:返回类型,参数类型和个数;

namespace Gossip
{
    public delegate void WT();//全局变量:  委托

WT这个委托是无返回值,无参数的。所以绑定的方法也只能无返回值,无参数

我们总结一下流程。

1在公共区申明委托

2子窗体新建一个委托属性 ,注意public

3主窗体把自己的一个方法绑定给子窗委托属性

4子窗内调用委托。(这样,子窗体就调用主窗体的方法了)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值