WinForm中窗体间的数据传递(二)
通过子窗口向外引发一个事件,父窗口去实现该事件,我们可以再不关闭父窗口和子窗口的情况下进行数据的传输显示
思路:在子窗口“添加用户”的中通过点击"添加用户",会动态的向外引发一个事件,通过该事件,我们可以进行数据传递
在其他窗口中,可以来响应该事件
其中,子窗口只负责向外引发一个事件,将事件的实现方法委托给别的对象,至于事件具体如何做处理,子窗口是不关心的,这一点体现了松耦合的一个设置
涉及到的知识点: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中窗体间的数据传递(二)相关推荐
- C#不同窗体间通信,数据传递
在一个项目中,很多时候都需要在窗体间进行数据传递和通信,最觉见的是父子窗体之间的数据传递,比如登录ID,各个窗体都需要知道.有很多文章都写了这方面的问题,提出很多优秀的方法,鄙人不才,搜了一些资料之后 ...
- C#中两个窗体间的数据传递
winform 窗体编程 在两个窗体间传递数据可分为两种: 一:父窗体向子窗体传递. 二:子窗体向父窗体传递. 传递实现的机制: 分别在两个窗体中创建公有属性的设置字段,分别供两个窗口调用. 两种情况 ...
- ANDROID中ACTIVITY间的数据传递
效果:有两个Activity分别为A和B,从A中采用Bundle封装数据向B中传递数据,然后使用startActivityForResult在B中修改后回传数据. 第一个Activity的layout ...
- C#中窗体间传递数据的几种方法
C#中窗体间传递数据的几种方法 在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个fo ...
- 浅谈ASP中Web页面间的数据传递
[简 介] 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式 ...
- matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...
我纠结了两个星期是否要写这一章-最后决定还是要写一章收尾,来解释其中的控件间的数据传递问题. 在前五篇中,如果有童鞋跟上了我的思路或者做完了这样一个gui,会发现还有一个一直避开的遗留问题,就是将歌曲 ...
- C#窗体间的数据传值(转)
关于C#窗体间的数据传值的方法好几种,在项目中都各有应用,虽然简单,这里记录下来,分享给大家! 一.使用带参数的构造函数 主窗体 private void button_Click(object se ...
- 实现程序间的数据传递
在实际应用中,我们经常需要多个程序相互配合来完成某些特定功能.例如两个应用程序间的同步.互斥:应用程序在起第二份实例时的参数自动传递-.要实现这些功能,就必须能实现程序间的数据传递. 有些特殊的高级技 ...
- 【转载】用Delphi实现程序间的数据传递
在实际应用中,我们经常需要多个程序相互配合来完成某些特定功能.例如两个应用程序间的同步.互斥:应用程序在起第二份实例时的参数自动传递-.要实现这些功能,就必须能实现程序间的数据传递. 有些特殊的高级技 ...
- Winform程序窗体间的跳转
关于Winform程序窗体间的跳转问题: 对于编程新手来讲,winform程序窗体间的跳转,经常会出现一些异常,或是弹出重复的窗口,如下图 下面给出一种方法,可以很好的避免掉这样的问题: 首先,在主程 ...
最新文章
- 走向管理:建立工作汇报机制
- 掌握python编程语言tensorflow_手把手教你eclipse集成Python语言+Tensorflow环境
- Java生鲜电商平台-促销系统的架构设计与源码解析
- 纳英特九宫医疗机器人编程_机器人大赛|我校王子航、阮云天成功进入世界机器人华东赛区决赛...
- Python DearPyGui 多线程与异步
- [UI] 精美UI界面欣赏[11]
- 计算机电源在线工作,计算机开关电源的工作原理与维修2.pdf
- mysql觸發器_mysql觸發器案例
- java中的移位操作
- 【Redis总结-基础入门】
- 美团饿了么外卖返利红包小程序免费源码部署教程
- 报错command line option ‘-std=c11‘ is valid for C/ObjC but not for C++
- 机器人学中一些常用的三角函数公式
- android六边形图片,android – 如何给图像的六边形形状
- 自然语言处理nlp小姜机器人(闲聊) nlp_xiaojiang-996station GitHub鉴赏官
- 10个优秀的Golang开源库类,武装生产力
- 大数据让电商实现精准营销
- 什么是软件 驱动软件 什么是程序
- 魅族手机云便签的这些使用小技巧 你都知道吗?
- 记一次 【Unknown thread id: XXX】 的排查