窗体间的传值--委托

起因:我们存在这样一个问题,主窗体调用子窗体并对子窗体进行操作,主窗体获取子窗体返回的结果并进行更进一步的操作

如果是以前可以在进行实例化子窗体的同时将主窗体作为参数传递给子窗体,让子窗体直接控制主窗体来得到子窗体返回的值

这样就出现了一种强耦合形式,即主窗体依赖子窗体,子窗体需要主窗体的一种现象,使得以后再改变子窗体或主窗体都会遇到很大麻烦,不易重构

而现在 我们可以通过委托的形式进行窗体间的传值从而更好的进行解耦

  1.创建一个解耦的类,该类包括 委托,事件,方法等
  2.主窗体通过显示子窗体的触发事件,向解耦类注册自己的一个方法,该方法为通过外界获取信息填充到自身类中(子窗体产生的结果存放到自身类中)
  3.在实例化子窗体时将解耦类进行传输,以保证主窗体和子窗体操作的是同一个解耦类
  4.子窗体调用解耦类里面的方法(该方法观察自身事件有无注册,有无分别进行一些操作<有。通过子窗体传入的参数调用主窗体的方法>)
总结:通过注册事件这一办法,更好的将主窗体和子窗体进行了解耦,不管修改主窗体或子窗体只要解耦类不变  都不会发生更多的操作,并且也进行了更好的封装
因为主窗体不必知道子窗体操作的过程,只需将自己的方法注册到解耦类中就可以进行分离

posted @ 2010-02-17 22:18  小尹.  阅读(486)  评论(0编辑  收藏  举报