实现窗体间参数的传递_第1页
实现窗体间参数的传递_第2页
实现窗体间参数的传递_第3页
实现窗体间参数的传递_第4页
实现窗体间参数的传递_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主讲:吕震宇主讲:吕震宇程序设计2河北理工大学经管学院管理科学与工程系三、窗体间参数的传递v 公开一个静态变量v 设置公有变量进行传递v 通过类及其消息订阅机制完成传递(推荐)河北理工大学经管学院管理科学与工程系河北理工大学经管学院管理科学与工程系 公开一个静态变量v解决方案 通过一个静态变量完成参数的传入传出v优点 实现起来非常简单v缺点 静态变量实质上等价于全局变量,违背了封装的原则 静态变量被多个实例所共享,无法提供个性服务河北理工大学经管学院管理科学与工程系河北理工大学经管学院管理科学与工程系 设置公有变量进行传递v解决方案 在子窗体创建一个公有变量供父窗体传入数据 在父窗体创建一个公

2、有变量供子窗体传出数据v优点 简单、易用 适用于对系统要求并不严格的小系统v缺点 耦合过于紧密(不符合针对抽象编程的原则) 要想访问公有变量就必须以强类型访问 ChildForm frm = new ChildForm(); 不能是Form frm = new ChildForm();河北理工大学经管学院管理科学与工程系河北理工大学经管学院管理科学与工程系 通过类及其消息订阅机制完成传递v解决方案 定义一个用于记录传入传出参数的专门类 利用构造函数(或其它“注入”手段)传入子窗口 利用事件订阅机制完成父、子窗体的互动v优点 功能强大 彻底解耦 父窗体持有对子窗体的引用 而子窗体不需要持有父窗体

3、的引用v缺点 实现起来较复杂河北理工大学经管学院管理科学与工程系河北理工大学经管学院管理科学与工程系 通过类及其消息订阅机制完成传递(续)vStep1 首先定义一结果对象,用来存放子窗体返回的结果。同时定义些事件,可以让子窗体修改父窗体的状态。河北理工大学经管学院管理科学与工程系河北理工大学经管学院管理科学与工程系public delegate void TextChangedHandler(string s);public class cResult public string Result1 = ; public string Result2 = ; public event TextCh

4、angedHandler TextChanged; public void ChangeText(string s) if(TextChanged != null) TextChanged(s); 通过类及其消息订阅机制完成传递(续)vStep2 添加一子窗体构造函数,允许接收一结果对象河北理工大学经管学院管理科学与工程系河北理工大学经管学院管理科学与工程系private cResult r;public frmChild(cResult r):this() this.r = r; 通过类及其消息订阅机制完成传递(续)vStep3 在父窗体中创建子窗体,并订阅cResult事件:河北理工大学经

5、管学院管理科学与工程系河北理工大学经管学院管理科学与工程系private void btnCallChild_Click(object sender, System.EventArgs e) cResult r = new cResult(); r.TextChanged += new TextChangedHandler(this.EventResultChanged); frmChild fc = new frmChild(r); fc.ShowDialog(); txtCallResult.Text = The Result is: + r.Result1 + + r.Result2;private void EventResultChanged(string s) txtEventResult.Text = s; 通过类及其消息订阅机制完成传递(续)v实验: Lab08-001-WinParamv观察 子窗体并没有持有任何主窗体的引用却可以给主窗体传递数据 事件机制确保了父、子窗体的联

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论