第08章:实现窗体间参数及传递.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第08章:实现窗体间参数及传递

主讲:吕震宇 程序设计2 河北理工大学经管学院管理科学与工程系 三、窗体间参数的传递 ① 公开一个静态变量 ② 设置公有变量进行传递 ③ 通过类及其消息订阅机制完成传递(推荐) 河北理工大学经管学院管理科学与工程系 ① 公开一个静态变量 解决方案 通过一个静态变量完成参数的传入传出 优点 实现起来非常简单 缺点 静态变量实质上等价于全局变量,违背了封装的原则 静态变量被多个实例所共享,无法提供个性服务 河北理工大学经管学院管理科学与工程系 ② 设置公有变量进行传递 解决方案 在子窗体创建一个公有变量供父窗体传入数据 在父窗体创建一个公有变量供子窗体传出数据 优点 简单、易用 适用于对系统要求并不严格的小系统 缺点 耦合过于紧密(不符合针对抽象编程的原则) 要想访问公有变量就必须以强类型访问 ChildForm frm = new ChildForm(); 不能是Form frm = new ChildForm(); 河北理工大学经管学院管理科学与工程系 ③ 通过类及其消息订阅机制完成传递 解决方案 定义一个用于记录传入传出参数的专门类 利用构造函数(或其它“注入”手段)传入子窗口 利用事件订阅机制完成父、子窗体的互动 优点 功能强大 彻底解耦 父窗体持有对子窗体的引用 而子窗体不需要持有父窗体的引用 缺点 实现起来较复杂 河北理工大学经管学院管理科学与工程系 ③ 通过类及其消息订阅机制完成传递(续) Step1 首先定义一结果对象,用来存放子窗体返回的结果。同时定义些事件,可以让子窗体修改父窗体的状态。 河北理工大学经管学院管理科学与工程系 public delegate void TextChangedHandler(string s); public class cResult { public string Result1 = ; public string Result2 = ; public event TextChangedHandler TextChanged; public void ChangeText(string s) { if(TextChanged != null) TextChanged(s); } } ③ 通过类及其消息订阅机制完成传递(续) Step2 添加一子窗体构造函数,允许接收一结果对象 河北理工大学经管学院管理科学与工程系 private cResult r; public frmChild(cResult r):this() { this.r = r; } ③ 通过类及其消息订阅机制完成传递(续) Step3 在父窗体中创建子窗体,并订阅cResult事件: 河北理工大学经管学院管理科学与工程系 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; } ③ 通过类及其消息订阅机制完成传递(续) 实验: Lab08-001-WinParam 观察 子窗体并没有持有任何主窗体的引用却可以给主窗体传递数据 事件机制确保了父、子窗体的联动关系 其它 推荐阅读上讲课中关于高级插件的程序代码 观察如何使用Service完成窗体间的协同工作 河北理工大学经管学院管理科学与工程系

文档评论(0)

skvdnd51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档