本文转自: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#实现两个窗体相互传值的更多相关文章

  1. winform两个窗体之间传值(C#委托事件实现)

    委托 定义一个委托,声明一个委托变量,然后让变量去做方法应该做的事. 委托是一个类型 事件是委托变量实现的 经典例子:两个winform窗体传值 定义两个窗体:form1和form2 form1上有一 ...

  2. c# winfrom 委托实现窗体相互传值

    利用委托轻松实现,子窗体向父窗体传值. 子窗体实现代码: //声明委托 public delegate void MyDelMsg(string msg); //定义一个委托变量 public MyD ...

  3. IOS委托,实现两个UIView相互传值

    转自:http://my.oschina.net/wbei/blog/89325 detegate委托在IOS中是一种随处可见的模式,通俗的说,就是我把想做的某件事委托给其他人去做,就好像Java中的 ...

  4. winform 窗体间传值

    WinForm 两窗体之间传值实例 2010-12-27 22:10:11|  分类: 学业|举报|字号 订阅     下载LOFTER我的照片书  |     窗体Form1和Form2 Form2 ...

  5. Visual Studio 中两个窗体(WinForm)之间相互传值的方法

    编写WinowsForm应用程序时,实现两个窗体之间相互传递值的方法其实很简单.以下用一个例子说明:在名为FormMain主窗体运行过程中利用名为FormInfo窗体,获取用户输入信息,并将这些信息返 ...

  6. C#-WinForm-跨窗体 构造函数传值 及应用—登录式窗口传值、如何关闭主页面时关闭应用程序、如何打开唯一窗口—★★★★★五星重量级

    构造函数可以传任意类型的值,并可以同时传多个值 结构函数传值的初步应用--简单的登陆式界面 现在我有两个窗体Form3和Form4,如下,如何点击Form3中的按钮后,打开Form4并将Form3中的 ...

  7. Pyqt 窗体间传值

    窗体间传值网上有好多方法,比如新建文件,先将子类窗体的数据传到文件中,父窗体读取文件.  Signal&Slot机制进行传值 等等 在这里,我们就举个采用apply方法:Signal& ...

  8. WinFrm窗体的传值方式

    比较简单的方法: 一:1.定义两个窗体 2.在父窗体中加入子窗体的属性 public ChildFrm ChildFrm { get; set; } 3.加载的时候: private void Par ...

  9. WinForm窗体之间传值

    当程序需要将一个窗体中的一些信息传给另一个窗体并让其使用时,就需要用到这个知识点 方法一:通过接受参数的窗体的构造函数传值 例:现有Form1和Form2两个窗体,二者都包含一个文本框,Form1还包 ...

随机推荐

  1. tableview封装使用

    下载地址 使用方法    1. #import "ZFTableView.h"   2.在需要使用的地方添加ZFTableView 如下       ZFTableView *ta ...

  2. [TimLinux] JavaScript 代码控制滚动条移动到顶部/底部

    1. scrollIntoView函数 这个函数控制滚动条顶部内容.还是底部内容呈现在视图窗口中,接收一个参数:boolean值. true: 顶部出现在视图窗口中 false: 底部存在在视图窗口中 ...

  3. [TimLinux] JavaScript 面向对象程序设计

    1. 面向对象 面向对象语言有一个标志:都有类的概念.通过类可以创建任意多个具有相同属性和方法的对象.ECMAScript中没有类的概念,因此JavaScript中的对象夜雨基于类的语言中的面向对象有 ...

  4. python光标图片获取

    # -*- coding:utf-8 -*- import win32api import win32gui,win32ui import time while True : time.sleep(1 ...

  5. jqurey(尺寸,css操作,效果,遍历)

    尺寸: height():设置或返回元素的高度(不包括内边距.边框或外边距). width():设置或返回元素的宽度(不包括内边距.边框或外边距). 例如: $("#box").h ...

  6. Day 10 面向对象基础

    目录 面对过程编程 面向对象编程 类 定义类 对象 定义对象 定制对象独有特征 面对过程编程 分析解决问题所需要的步骤, 用函数将这些步骤一步一步实现, 使用的时候一个个调用就可以了 优点: 复杂的问 ...

  7. 【系列专题】JavaScript 重温系列(22篇全)

    JavaScript 初级篇 [JS]120-重温基础:语法和数据类型 [JS]121-重温基础:流程控制和错误处理 [JS]122-重温基础:循环和迭代 [JS]123-重温基础:函数 [JS]12 ...

  8. 为什么HashMap的加载因子是0.75?

    说在前面 ​ 在HashMap中,默认创建的数组长度是16,也就是哈希桶个数为16,当添加key-value的时候,会先计算出他们的哈希值(h = hash),然后用return h & (l ...

  9. 聊聊JS的二进制家族:Blob、ArrayBuffer和Buffer

    事实上,前端很少涉及对二进制数据的处理,但即便如此,我们偶尔总能在角落里看见它们的身影. 今天我们就来聊一聊前端的二进制家族:Blob.ArrayBuffer和Buffer 概述 Blob: 前端的一 ...

  10. Javascript 垃圾回收方法

    Javascript 垃圾回收方法 标记清除(mark and sweep) 这是 JavaScript 最常见的垃圾回收方式,当变量进入执行环境的时候,比如函数中声明一个变量,垃圾回收器将其标记为& ...