• C#委托传值


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

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

    下面一起看一下委托事件

    什么是委托

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

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

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

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

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

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

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

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

    子窗体

    子窗体定义委托

    public delegate void SendMsg(string msg);
    
    • 1

    定义一个事件

    public event SendMsg send;
    
    • 1

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

        private void button1_Click(object sender, EventArgs e)
        {
            send(textBox1.Text);
        } 
    
    • 1
    • 2
    • 3
    • 4

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

    父窗体

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

            private ChildForm Child;            
            public ChildForm ()
            {
                InitializeComponent();
    
                Child= new ChildForm();    // 实例化子窗体   
                Child.send += new ChildForm.SendMsg(ReceiveChildMsg);  // 订阅子窗体的send事件
                // 也可以简写成如下格式
                // Child.send += ReceiveChild1Msg;
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    定义一个接收方法

            private void ReceiveChildMsg(string msg)
            {
    			Label.text=msg;//这里我们接收到之后赋给了label
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    城市修建(逆天的取值范围) long long, numeric_limits<long long>::max()
    【面试题】Java基础
    Axios入门
    【限时免费】20天拿下华为OD笔试之【哈希集合】2023B-明明的随机数【欧弟算法】全网注释最详细分类最全的华为OD真题题解
    Kafka学习——梳理bin目录下各个脚本的用法(五)
    STM32F103驱动HCSR04超声波测距显示
    【三种加载自定义控制器的方式 Objective-C语言】
    clock gating
    pinia原理
    联想混合云Lenovo xCloud,新企业IT服务门户
  • 原文地址:https://blog.csdn.net/qq_39569480/article/details/127572015