c#实现两个窗体相互传值
本文转自:https://mp.csdn.net/postedit/100058721
1、功能展示
有时需要将子界面的内容传递到父界面,方法有好几种。经常用的是通过委托实现。具体的效果如下:
【说明】点击父界面上“打开子界面”button,则会弹出子界面。父界面与子界面如上图所示。
【说明】在子界面的textBox框内输入待返回至父界面的内容,点击“将内容返回”button,则父界面的textBox将会展示返回的内容。具体如上图所示
2、代码分析
里面应用了委托(delegate)和事件(event)。委托就是前端开发中最常用的“回调方法”(callback),event是一种注册机制,将动作与委托关联。
为了实现以上功能,首先先编写子窗体的定义。代码如下:
public partial class Form2 : Form
{
//第二步:声明一个委托类型的事件
public event setTextValue setFormTextValue; public Form2()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//第三步:准备相关数据。
setFormTextValue(this.textBox1.Text);
}
} // 第一步:声明一个委托。(根据自己的需求)
//注意:该委托必须声明在命名空间中,而不应该声明在类中,否则不能调用(新加)
public delegate void setTextValue(string textValue);
第一步:先在子窗体中定义一个委托。根据实际需求定义委托
第二步:在子窗体中声明一个event,将委托与动作关联
第三步:在具体的事件中实现event
以上三步参见Form2的代码
父窗体的代码如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
//第四步:初始化事件
form2.setFormTextValue += new setTextValue(form2_setFormTextValue);
form2.Show();
} //第五步:实现事件
int form2_setFormTextValue(string textValue)//改为int,因为如果为void,上面第四步报错
{
//具体实现。
this.textBox1.Text = textValue;
return ;//新加
}
}
在父窗体的具体实现中分为2步:
第四步:在定义子窗体时,声明子窗体的事件
第五步:实现具体的事件
以上,就是全部的内容
3、功能分析
通过委托的方式,优点:松耦合。
c#实现两个窗体相互传值的更多相关文章
- winform两个窗体之间传值(C#委托事件实现)
委托 定义一个委托,声明一个委托变量,然后让变量去做方法应该做的事. 委托是一个类型 事件是委托变量实现的 经典例子:两个winform窗体传值 定义两个窗体:form1和form2 form1上有一 ...
- c# winfrom 委托实现窗体相互传值
利用委托轻松实现,子窗体向父窗体传值. 子窗体实现代码: //声明委托 public delegate void MyDelMsg(string msg); //定义一个委托变量 public MyD ...
- IOS委托,实现两个UIView相互传值
转自:http://my.oschina.net/wbei/blog/89325 detegate委托在IOS中是一种随处可见的模式,通俗的说,就是我把想做的某件事委托给其他人去做,就好像Java中的 ...
- winform 窗体间传值
WinForm 两窗体之间传值实例 2010-12-27 22:10:11| 分类: 学业|举报|字号 订阅 下载LOFTER我的照片书 | 窗体Form1和Form2 Form2 ...
- Visual Studio 中两个窗体(WinForm)之间相互传值的方法
编写WinowsForm应用程序时,实现两个窗体之间相互传递值的方法其实很简单.以下用一个例子说明:在名为FormMain主窗体运行过程中利用名为FormInfo窗体,获取用户输入信息,并将这些信息返 ...
- C#-WinForm-跨窗体 构造函数传值 及应用—登录式窗口传值、如何关闭主页面时关闭应用程序、如何打开唯一窗口—★★★★★五星重量级
构造函数可以传任意类型的值,并可以同时传多个值 结构函数传值的初步应用--简单的登陆式界面 现在我有两个窗体Form3和Form4,如下,如何点击Form3中的按钮后,打开Form4并将Form3中的 ...
- Pyqt 窗体间传值
窗体间传值网上有好多方法,比如新建文件,先将子类窗体的数据传到文件中,父窗体读取文件. Signal&Slot机制进行传值 等等 在这里,我们就举个采用apply方法:Signal& ...
- WinFrm窗体的传值方式
比较简单的方法: 一:1.定义两个窗体 2.在父窗体中加入子窗体的属性 public ChildFrm ChildFrm { get; set; } 3.加载的时候: private void Par ...
- WinForm窗体之间传值
当程序需要将一个窗体中的一些信息传给另一个窗体并让其使用时,就需要用到这个知识点 方法一:通过接受参数的窗体的构造函数传值 例:现有Form1和Form2两个窗体,二者都包含一个文本框,Form1还包 ...
随机推荐
- 洛谷 题解 P4613 【[COCI2017-2018#5] Olivander】
我又双叒叕被包菜辣! P4613 [COCI2017-2018#5] Olivander 首先,不知道为什么这题无法提交翻译: 所以,我先放个翻译: 哈利波特在与伏地魔的战斗中损坏了他的魔杖.他决定在 ...
- Spring AOP简介与底层实现机制——动态代理
AOP简介 AOP (Aspect Oriented Programing) 称为:面向切面编程,它是一种编程思想.AOP 是 OOP(面向对象编程 Object Oriented Programmi ...
- Word表格斜线怎么弄?这里有三种方法很实用
有些时候我们也会在Word文档中插入表格,因为这样可以准确的表达出文档中的内容.大家应该都知道Excel表格斜线怎么弄,那么Word表格斜线怎么弄吗?今天呢小编就帮大家总结了三种方法哦,有需要的小伙伴 ...
- 如何在ASP.NET Core 中快速构建PDF文档
比如我们需要ASP.NET Core 中需要通过PDF来进行某些简单的报表开发,随着这并不难,但还是会手忙脚乱的去搜索一些资料,那么恭喜您,这篇帖子会帮助到您,我们就不会再去浪费一些宝贵的时间. 在本 ...
- 使用.NET Core创建Windows服务 - 使用.NET Core工作器方式
原文:Creating Windows Services In .NET Core – Part 3 – The ".NET Core Worker" Way 作者:Dotnet ...
- 伸展树(Splay tree)的基本操作与应用
伸展树的基本操作与应用 [伸展树的基本操作] 伸展树是二叉查找树的一种改进,与二叉查找树一样,伸展树也具有有序性.即伸展树中的每一个节点 x 都满足:该节点左子树中的每一个元素都小于 x,而其右子树中 ...
- 从头学pytorch(二) 自动求梯度
PyTorch提供的autograd包能够根据输⼊和前向传播过程⾃动构建计算图,并执⾏反向传播. Tensor Tensor的几个重要属性或方法 .requires_grad 设为true的话,ten ...
- Python3 网络编程和并发编程总结
目录 网络编程 开发架构 OSI七层模型 socket subprocess 粘包问题 socketserver TCP UDP 并发编程 多道技术 并发和并行 进程 僵尸进程和孤儿进程 守护进程 互 ...
- 【TS】358- 浅析 TypeScript 设计模式
点击上方"前端自习课"关注,学习起来~ 作者:DD菜 https://zhuanlan.zhihu.com/p/43283016 设计模式就是软件开发过程中形成的套路,就如同你在玩 ...
- 【重温基础】16.JSON对象介绍
本文是 重温基础 系列文章的第十六篇. 今日感受:静. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1-14篇 [重温基础]15.JS对象介绍 本章节复习的 ...