C#委托传值

69 篇文章 13 订阅

在winform开发过程中我们有时候需要窗体之间传值,传值的方式有很多种,今天讲一下委托传值

传值的方式有很多种比如:
定义全局静态变量,全局都可使用,但是当内存不够时会被回收导致变量为空。
定义父窗体公共变量传给子窗体,只能子传父
等等

下面一起看一下委托事件

什么是委托

委托(delegate)和事件(event)。
委托从字面上理解就是一种代理,类似于房屋中介,由租房人委托中介为其租赁房屋。

在 C#语言中,委托则委托某个方法来实现具体的功能。

委托是一种引用类型,虽然在定义委托时与方法有些相似,但不能将其称为方法。

委托在使用时遵循三步走的原则,即定义声明委托、实例化委托以及调用委托。

从数据结构来讲,委托是和类一样是一种用户自定义类型。

委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。

调用委托的时候,委托包含的所有方法将被执行。

委托是 C# 语言中的一个特色,通常将委托分为命名方法委托、多播委托、匿名委托,其中命名方法委托是使用最多的一种委托。

子窗体

子窗体定义委托

public delegate void SendMsg(string msg);

定义一个事件

public event SendMsg send;

当触发某事件或方法时发送信息

    private void button1_Click(object sender, EventArgs e)
    {
        send(textBox1.Text);
    } 

委托可以理解为方法的代理,当我需要调用方法时可以直接调用委托,而事件是绑定到委托上的。当事件被触发,就会运行我们最终想要执行的方法。

父窗体

子窗体注册了委托和事件,父窗体来订阅它

        private ChildForm Child;            
        public ChildForm ()
        {
            InitializeComponent();

            Child= new ChildForm();    // 实例化子窗体   
            Child.send += new ChildForm.SendMsg(ReceiveChildMsg);  // 订阅子窗体的send事件
            // 也可以简写成如下格式
            // Child.send += ReceiveChild1Msg;
        }

定义一个接收方法

        private void ReceiveChildMsg(string msg)
        {
			Label.text=msg;//这里我们接收到之后赋给了label
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香煎三文鱼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值