C# 使用委托在两个窗体间实时传值

本文介绍如何使用C#中的委托实现在主窗体和子窗体之间的实时值传递。通过主窗体的事件触发子窗体的方法更新,详细阐述了构建发布者(子窗体)和订阅者(父窗体)的过程。文中还提醒注意子窗体存在性和关闭时的处理,以避免未实例化错误和通信异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目上的情况是这样的:

主窗体的值会实时变化,而子窗体的值要随父窗体的变化而变化。


思路:

主窗体是主动,子窗体被动,由主窗体的改变的事件去调用子窗体的动作函数来改变子窗体。

1.子窗体写执行动作的方法

2.子窗体声明一个委托(在命名空间中,而不在类中)。

3.父窗体实例化子窗体的委托,并想办法将子窗体的执行方法名给委托对象。(父窗体的委托对象就可以知道是哪个执行方法啦)

4.父窗体在主动改变的事件中调用委托对象,并传入值,相当于调用了子窗体的方法,实现子窗体的改变。

步骤1、2是构建发布者;步骤3、4是构建订阅者。


A.子窗体先写方法和声明委托

子窗体写执行动作的方法

子窗体声明一个委托(在命名空间中,而不在类中)。

public delegate void DelegateMethod(string x);
 public void ChangeTime(string x)
        {
            this.Invoke(new Action(() =>
            {
                label1.Text = x;
            }));
        }

第一个代码只是声明了委托(直接在namespace下)而没有实例化,也没有指出是哪个方法的委托。第二个代码是具体的执行方法。


B.主窗体实例化委托,并指定子窗口内的方法,并调用执行。

实例化一个委托对象

 DelegateMethod s;

为了指定s对应的方法,在子窗体生成的时候,指定方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值