• .NET父子窗体交互(二)——信息共享和传递


      上一章节探讨了如何解决子窗体随父窗体关闭而关闭的“疑难杂症”,本章讨论父子窗体间如何进行数据交互。

      一、共享法:

      所谓“共享法”,就是父窗体把数据读入到第三方(通常是一个静态类,或是某个共享文件,流等),然后子窗体读取。这种情况一般用于先前“闪屏窗体”需要预先加载配置信息,然后这个配置信息被主窗体所用。此时,“第三方”可以单独抽取成类库的形式被这两个窗体使用,或者单独成立一个模块(VB.NET),或者定义一个静态类(C#)

      二、消息订阅法:

      .NET中如果要使得两个毫不相干的类相互之间发生某种关系,我们可以使用事件机制。在NET中窗体本身就是“类”的最佳体现,因此自然可以使用事件完成这个目标。假设A受B的影响而发生某种行为,我们只需要订阅B的某个事件(在A中),并且在对应的事件中写上针对B的某个行为A会如何反应的代码即可

      因此,如果存在着这样的两个窗体(比如“设置”窗体和“主窗体”,假定对设置窗体做了某种设置,主窗体应当实时反应)。此时,我们可以把“主窗体”理解为“受到‘设置’窗体影响而影响——继而订阅“设置”窗体的某个事件,然后设法在设置窗体中触发此类事件,这样订阅该事件的对应代码(在主窗体中)就会反应出来。

      为了把设置窗体的设置参数回传到主窗体对应函数中,我们的那个事件应当有某种参数。

      三、总结:

      共享法一般用于共享类可能存在消亡的情况下(譬如说闪屏窗体纯粹为了加载共享信息,加载完了就自动关闭释放内存了)。而消息订阅法一般用于两个窗体间频繁需要信息交互,同时窗体之间不存在消亡的情况。

  • 相关阅读:
    CF149D Coloring Brackets
    CF508D
    CF483C Diverse Permutation
    【纪念】我写过几乎最长的代码
    .net core图片上传详解
    layui插件croppers的使用
    关于日常操作中sql的性能
    leeCode 278
    leeCode刷题 1078
    leeCode刷题 lc184
  • 原文地址:https://www.cnblogs.com/ServiceboyNew/p/3008786.html
Copyright © 2020-2023  润新知