.NET父子窗体交互(二)——信息共享和传递
上一章节探讨了如何解决子窗体随父窗体关闭而关闭的“疑难杂症”,本章讨论父子窗体间如何进行数据交互。
一、共享法:
所谓“共享法”,就是父窗体把数据读入到第三方(通常是一个静态类,或是某个共享文件,流等),然后子窗体读取。这种情况一般用于先前“闪屏窗体”需要预先加载配置信息,然后这个配置信息被主窗体所用。此时,“第三方”可以单独抽取成类库的形式被这两个窗体使用,或者单独成立一个模块(VB.NET),或者定义一个静态类(C#)。
二、消息订阅法:
.NET中如果要使得两个毫不相干的类相互之间发生某种关系,我们可以使用事件机制。在NET中窗体本身就是“类”的最佳体现,因此自然可以使用事件完成这个目标。假设A受B的影响而发生某种行为,我们只需要订阅B的某个事件(在A中),并且在对应的事件中写上针对B的某个行为A会如何反应的代码即可。
因此,如果存在着这样的两个窗体(比如“设置”窗体和“主窗体”,假定对设置窗体做了某种设置,主窗体应当实时反应)。此时,我们可以把“主窗体”理解为“受到‘设置’窗体影响而影响——继而订阅“设置”窗体的某个事件,然后设法在设置窗体中触发此类事件,这样订阅该事件的对应代码(在主窗体中)就会反应出来。
为了把设置窗体的设置参数回传到主窗体对应函数中,我们的那个事件应当有某种参数。
三、总结:
共享法一般用于共享类可能存在消亡的情况下(譬如说闪屏窗体纯粹为了加载共享信息,加载完了就自动关闭释放内存了)。而消息订阅法一般用于两个窗体间频繁需要信息交互,同时窗体之间不存在消亡的情况。