栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C#委托 解决跨线程报警

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#委托 解决跨线程报警

1委托和房产中介的作用是一样的。 2委托和c语言的函数指针差不多。但c语言的函数指针给了函数地址后,只能调用一次。不能像数组那样绑定多个函数地址。C#的委托却可以。 3你可以理解委托是C语言  函数指针的 升级版 4 委托是变量,它的数据类型是方法。 int num=33; 那num是int类型。委托是方法类型; 理解房产中介的交易,你就能学会怎么使用委托了。 1中介就是委托 delegate 这个对象就是在他们2个人都认识的地方,那肯定就在公共区域,同一个namespace下定义委托;主窗体和子窗体都是同一个命名空间
namespace Gossip
{
    public delegate void WT();//全局变量:  委托
2我们的目的是什么?子窗体想去控制主窗体。这就相当于我要买房,我是不是要去中介找个业务员啊。public delegate void WT();   这个中介有了,那业务员呢?在子窗体定义一个属性。
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子窗体调用委托。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号