分别用委托和事件和接口实现多窗体间的传值

委托实现多窗口传值的一般流程是
1、创建委托类型 private Action<string> AfterMsgSend { get; set; }
2、创建窗体对象 ChildFrm frm = new ChildFrm();
3、给委托注册方法(追加),注意此处的方法是窗体的方法 即frm.方法 AfterMsgSend += frm.SetText;//窗体打开之前给委托注册方法
4、frm.Show();
5、触发方法 AfterMsgSend(txtMessage.Text.Trim());

事件实现多窗口传值的一般流程是
1、 private event EventHandler AfterMsgChangeEvent; //定 义消息发布的事件
2、 ChildFrm frm = new ChildFrm();
AfterMsgChangeEvent += frm.AfterParentFrmTextChange; //给窗体注册事件
//这个是子窗体中的方法,与委托类似
public void AfterParentFrmTextChange(object sender, EventArgs e)
{
//拿到父窗体的传来的文本
TextBoxMsgChangeEventArg arg = e as TextBoxMsgChangeEventArg;
this.SetText(arg.Text);
}
frm.Show()
3、触发事件
AfterMsgChangeEvent(this, new TextBoxMsgChangeEventArg() { Text = this.txtMessage.Text });

//上面用到的方法

public class TextBoxMsgChangeEventArg : EventArgs
{
public string Text { get; set; }
}

用接口实现多窗口传值的流程
1、定义接口
2、主窗体中创建一个集合(属性)来接收关注窗体
3、创建窗口,如果要实现接口将其加入到受主窗体所关注的窗体中来
4、遍历受关注的窗体,并实现接口 实现接口的方法可以写在子窗体中

时间: 2024-08-01 01:16:12

分别用委托和事件和接口实现多窗体间的传值的相关文章

委托:Winform实现窗体间的传值

软件界面如上所示:点击接收窗体实现打开发送窗体,发送窗体点击“发送”,即可发送到接收窗体,可以实现窗体间的传值. 接收窗体的主要代码: /// <summary> /// 打开发送窗体 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOpen_Click(o

C# 利用委托事件进行窗体间的传值(新手必看)

引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ,是极不安全的一种方式.在升级一下的新手做法就是在接受窗体中定义一个方法然后通过 调用这个方法来给某个控件或者属性赋值.这两种方法都是非安全的低级方式.非常不建议使用.本文我们讲讲如何通过委托事件(非单纯的委托)来解决窗体间信息传递的问题. 场景: 通过点击主主窗体From_Main的发送按钮,所有

委托,事件,接口

委托 看做是指向一个方法列表的指针,列表中的事件必须有同样的返回值和标示等 事件 通过设置事件,在触发事件时调用事件处理函数来完成功能. 接口 类似于抽象类,但是接口可以达到多继承的效果,因为C#不支持多重继承,接口中是未实现的方法名,在实现接口的类中必须全部实现这些方法. 明天开始C#网络可能,2个小时,认真.

面向对象——一起来复习委托与事件!

事件与委托其实并不难理解,只是因为它们的使用方式与常用的编码有很大的差别,例如通常编写的都是同步代码,调用一个类型的方法,会即刻出现方法执行的结果,这是符合逻辑的.但在某些情况中,同步代码未必满足需求,拿最近的打车软件打个比方,搭车者发送一个信息,就会推送给附近的司机,使用同步代码,搭车对象肯定需要调用司机中心对象,这样就出现了我们一直不愿意看到的情况:两个类型紧密地耦合在一起.既然要其它类型对自己的行为作出反应,亲自调用其类型的方法似乎不可避免,在同步代码中,很难避免这种紧密的类型调用关系.而

窗体间传值(委托)

窗体间的传值很常用(还记得当时困扰了我好久...),有几种方式都可以实现,这里采用委托的方式. 1.首先,建好两个窗体,想要的效果如下. 2.看看里面的代码 2.1 Form1的代码 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using S

面向对象基础(继承类,抽象方法,接口,委托和事件)

1.页面上实现猫叫,狗叫,虎叫 <asp:Button ID="cat" runat="server" Text="猫叫" onclick="cat_Click" /><br/> <asp:Button ID="dog" runat="server" Text="狗叫" onclick="dog_Click" />

接口、委托、事件

接口和抽象类: 为了更好的理解接口,最常见的问题莫过于接口和抽象类的区别.接口和抽象类却存在实实在在的差异,具体体现在: 1.一个类可以实现任意多个接口,但是最多只能对一个抽象类进行子类化: 2.一个抽象类可以包括非抽象方法,而一个接口的所有方法在效果上都是抽象的: 3.一个抽象类可以声明并使用变量,而一个接口不能: 4.一个抽象类中的方法的访问修饰符可以是:public,internal,protected,protected internal,或者private,而接口中默认情况下都是pub

C#高级知识点概要(1) - 委托和事件

作者:linybo 要成为大牛,必然要有扎实的基本功,不然时间再长项目再多也很难有大的提升.本系列讲的C# 高级知识点,是非常值得去撑握的,不仅可以让你写代码时游刃有余,而且去研究和学习一些开源项目时,也不会显得那么吃力了. 希望大家记住,这里讲的所有的知识点,不仅仅是了解了就可以了,还要会灵活用,一定要多思考,撑握其中的编程思想. 本文讲的是委托和事件,这两个词可能你早就耳熟能详,但你是否真正撑握了呢? 本系列讲的C#高级知识点都是要求开发时能达到可以徒手写出来的水平(不依赖搜索引擎.找笔记等

C#中委托和事件

目 录 1.1 理解委托 2 1.1.1 将方法作为方法的参数 2 1.1.2 将方法绑定到委托 4 1.2 事件的由来 6 1.2.1 更好的封装性 6 1.2.2 限制类型能力 9 1.3 委托的编译代码 10 1.4 .NET 框架中的委托和事件 11 1.4.1 范例说明 11 1.4.2 Observer 设计模式简介 12 1.4.3 实现范例的Observer 设计模式 13 1.4.4 .NET 框架中的委托与事件 14 1.5 委托进阶 16 1.5.1 为什么委托定义的返回值