通过子窗口向外引发一个事件,父窗口去实现该事件,我们可以再不关闭父窗口和子窗口的情况下进行数据的传输显示

思路:在子窗口“添加用户”的中通过点击"添加用户",会动态的向外引发一个事件,通过该事件,我们可以进行数据传递

在其他窗口中,可以来响应该事件

其中,子窗口只负责向外引发一个事件,将事件的实现方法委托给别的对象,至于事件具体如何做处理,子窗口是不关心的,这一点体现了松耦合的一个设置

涉及到的知识点:1.如何定义一个事件?public delegate void UserAddEventHandler();public event UserAddEventHandler UserAdd;2.如何响应子窗口引发出来的事件?userDialog.UserAdd += userDialog_UserAdd;//将UserAdd的实现委托为userDialog_UserAdd方法void userDialog_UserAdd()
{//方法体
}3.子窗口中如何向父窗口传递数据?通过delegate的声明中,添加两个参数:public delegate void UserAddEventHandler(object sender,UserEventArgs e);其中UserEventArgs是一个继承自EventArgs的类 public class UserEventArgs : EventArgs{public User currentUser { get;set;}public UserEventArgs(User user) {this.currentUser = user;}}
从而,在向外引发事件的时候,将User的信息通过第二个参数传递出去 private void button1_Click(object sender, EventArgs e){//向外引发一个事件if(UserAdd!=null){User user = new User();user.UserName = textBox3.Text;user.PassWord = textBox4.Text;UserAdd(this,new UserEventArgs(user));}}
在父窗口的userDialog_UserAdd方法中,就可以对接收到的数据进行处理
private void 添加用户ToolStripMenuItem_Click(object sender, EventArgs e)
{FrmUser userDialog = new FrmUser();//将UserAdd的实现委托为userDialog_UserAdd方法userDialog.UserAdd += userDialog_UserAdd;userDialog.ShowDialog();
}void userDialog_UserAdd(object sender,UserEventArgs e)
{MessageBox.Show(e.currentUser.UserName);
}

原创文章,转载请注明出处:http://www.cnblogs.com/hongfei/archive/2012/12/17/2822203.html

WinForm中窗体间的数据传递(二)相关推荐

  1. C#不同窗体间通信,数据传递

    在一个项目中,很多时候都需要在窗体间进行数据传递和通信,最觉见的是父子窗体之间的数据传递,比如登录ID,各个窗体都需要知道.有很多文章都写了这方面的问题,提出很多优秀的方法,鄙人不才,搜了一些资料之后 ...

  2. C#中两个窗体间的数据传递

    winform 窗体编程 在两个窗体间传递数据可分为两种: 一:父窗体向子窗体传递. 二:子窗体向父窗体传递. 传递实现的机制: 分别在两个窗体中创建公有属性的设置字段,分别供两个窗口调用. 两种情况 ...

  3. ANDROID中ACTIVITY间的数据传递

    效果:有两个Activity分别为A和B,从A中采用Bundle封装数据向B中传递数据,然后使用startActivityForResult在B中修改后回传数据. 第一个Activity的layout ...

  4. C#中窗体间传递数据的几种方法

    C#中窗体间传递数据的几种方法 在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个fo ...

  5. 浅谈ASP中Web页面间的数据传递

    [简 介] 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式 ...

  6. matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...

    我纠结了两个星期是否要写这一章-最后决定还是要写一章收尾,来解释其中的控件间的数据传递问题. 在前五篇中,如果有童鞋跟上了我的思路或者做完了这样一个gui,会发现还有一个一直避开的遗留问题,就是将歌曲 ...

  7. C#窗体间的数据传值(转)

    关于C#窗体间的数据传值的方法好几种,在项目中都各有应用,虽然简单,这里记录下来,分享给大家! 一.使用带参数的构造函数 主窗体 private void button_Click(object se ...

  8. 实现程序间的数据传递

    在实际应用中,我们经常需要多个程序相互配合来完成某些特定功能.例如两个应用程序间的同步.互斥:应用程序在起第二份实例时的参数自动传递-.要实现这些功能,就必须能实现程序间的数据传递. 有些特殊的高级技 ...

  9. 【转载】用Delphi实现程序间的数据传递

    在实际应用中,我们经常需要多个程序相互配合来完成某些特定功能.例如两个应用程序间的同步.互斥:应用程序在起第二份实例时的参数自动传递-.要实现这些功能,就必须能实现程序间的数据传递. 有些特殊的高级技 ...

  10. Winform程序窗体间的跳转

    关于Winform程序窗体间的跳转问题: 对于编程新手来讲,winform程序窗体间的跳转,经常会出现一些异常,或是弹出重复的窗口,如下图 下面给出一种方法,可以很好的避免掉这样的问题: 首先,在主程 ...

最新文章

  1. 走向管理:建立工作汇报机制
  2. 掌握python编程语言tensorflow_手把手教你eclipse集成Python语言+Tensorflow环境
  3. Java生鲜电商平台-促销系统的架构设计与源码解析
  4. 纳英特九宫医疗机器人编程_机器人大赛|我校王子航、阮云天成功进入世界机器人华东赛区决赛...
  5. Python DearPyGui 多线程与异步
  6. [UI] 精美UI界面欣赏[11]
  7. 计算机电源在线工作,计算机开关电源的工作原理与维修2.pdf
  8. mysql觸發器_mysql觸發器案例
  9. java中的移位操作
  10. 【Redis总结-基础入门】
  11. 美团饿了么外卖返利红包小程序免费源码部署教程
  12. 报错command line option ‘-std=c11‘ is valid for C/ObjC but not for C++
  13. 机器人学中一些常用的三角函数公式
  14. android六边形图片,android – 如何给图像的六边形形状
  15. 自然语言处理nlp小姜机器人(闲聊) nlp_xiaojiang-996station GitHub鉴赏官
  16. 10个优秀的Golang开源库类,武装生产力
  17. 大数据让电商实现精准营销
  18. 什么是软件 驱动软件 什么是程序
  19. 魅族手机云便签的这些使用小技巧 你都知道吗?
  20. 记一次 【Unknown thread id: XXX】 的排查

热门文章

  1. SQL Server 建库,表,约束(一)
  2. 【转】TCP状态变迁图
  3. 如何在网页中播放FLV文件的代码
  4. 【整理分享1】PHP中exit()与die()的区别
  5. Django-----模板嵌套
  6. 【原创】实战padding oracle漏洞
  7. Eureka 注册中心 简单搭建
  8. 第一次作业:阅读优秀博文感想
  9. CSS基础part1
  10. [leetcode] Nim Game