• 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
  • 相关阅读:
    使用 Rust 开发:以太坊与 Layer2 生态建设新趋势
    Vue3 - reactive 复杂类型(通俗易懂,详细教程)
    PHP反射:探索、修改和实例化
    如果查看svn的账号和密码
    Linux·uboot编译问题
    基于Python是疫情期间教育领域新闻知识图谱分析
    配置基于接口的ARP表项限制和端口安全(限制用户私自接入傻瓜交换机或非法主机接入)
    java计算机毕业设计教学质量评价系统源码+数据库+lw文档+系统
    概率论基础
    用python字典统计CSV数据
  • 原文地址:https://blog.csdn.net/qq_39569480/article/details/127572015