最近接手一个项目..有个既存的业务模型可以参考(程序构造很烂,共通化之类的完全没有)
分析了原来的东西以后..有点想做个共通的FORM超级类..
每个窗体都继承这个类(.NET是继承标准的FORM类)这个超级类里..初步的设想是实现以下功能.1.共通信息的调用接口统一化
2.MESSAGE(信息/警告/业务异常/系统异常)的表示共通接口.
3.窗体的模式(新增/连协新增/修改/参照)
4.窗体初始化/终了的共通处理方式.
5.等等其他...希望大家一起讨论..PS:  C/S结构系统... 100分.抛砖引玉~~

解决方案 »

  1.   

    做B/S的时候,涉及到母版页、页面、控件之间的调用,我会采用继承自定义page页的方法。
    C/S的时候,没这么写过,如果是考虑到代码的重用,我会把通用的东西写到一个common类里面。
      

  2.   

    其实跟子类继承父类一样的道理,不过只是以画面形式显示的。需要注意子form跟父类form 重叠的方法,就是被覆盖的方法,我觉得最好是覆盖方法,而不是用new重新定义。还有就是这个父类要有 一定的普遍性,就俩个页面有类似的look and feel,那大可不必为他们做父类。还有一些窗体关闭事件,释放事件 需要重点注意下, 
      

  3.   

    不是说..1~2个FORM的共通父类..而是全项目的画面(通用组件除外)
    放在别的COMMON类..也是一种解决方法..但是.窗体构造的时候..还是得有规则.
    然后REVIEW的代价太大..由于是固定行业的,很多时候..或许会做大范围的重构组合之类的动作..
      

  4.   

    界面方面可以这样考虑.
    2.MESSAGE(信息/警告/业务异常/系统异常)的表示共通接口. 
    3.窗体的模式(新增/连协新增/修改/参照) 
    我认为没必要.
      

  5.   

    2.MESSAGE(信息/警告/业务异常/系统异常)的表示共通接口.MESSAGE的实际编辑,组合之类的..都是逻辑组件实现的..因为底层不容易动(既存的..藕合太厉害).
    只是想..统一几个借口..然后做在窗体父类里...调用起来方便...还不容易乱用...3.窗体的模式(新增/连协新增/修改/参照)   <<<<只是一个状态位..根据状态..各个画面,或者初始化的时候..控件状态不一致..
      

  6.   

    刚弄过一个继承WindowsForm的派生类,主要是界面的修改。个人感觉细节方面很费时间,比如最大化按钮等的重写,会引来更多的问题。经验总结是,所谓的超类,功能越少越好。
      

  7.   

    我一般的父类(Form)主要就是设置一些通用属性,字体大小,背景等
    基本上很少实现功能
    我觉得涉及到界面统一外观的时候可以设置继承窗体
      

  8.   

    既存的就上百个控件...控件组了...
    看着头晕...还有那INTERFACE..全给他写在一个CS文件里了...