C# FORM继承体制、可视化编程解决方案

这个问题困扰了我有两年之久,一直在使用折中的方案、但限制依旧存在,这次终于可以解决了。心情很不错~.废话不多说,直接进入正题。
 

问题定义:在常规开发步骤中,WINDOW2继承WINDOW1---会遇到无法对WINDOW2进行可视化编程(控件的拖拽放置)。会出下如下的错误界面。

其核心问题在于:VS把WINDOWS的窗体通过partial关键字,拆分为desginer.cs和xx.cs两部分。desginer.cs由VS通过操作者的可视化编程动态生成代码,而xx.cs则用来编写用户自定义的一些需求代码。通过编译时两部分合并才是一个完成的类,这也是partial关键字的作用。而WINOWS2继承WINDOWS1则会丢弃、可视化编程的优势。这无疑是很痛苦的、其原因可能就在于此,具体则不得而知。
 
针对问题的确定、就有了解决方案:
1.新建WINDOW1,删除desginer.cs,并把其内部代码copy到xx.cs内。后续通过可视化设计生成代码会追加到xx.cs
2.新建WINSOW1,同样删除desginer.cs,并把其内部代码copy到xx.cs内。最后继承WINDOW1。
 这样就可以支持WINDOW2的可视化编程,还可以在本窗体变更WINDOW1的属性定义。实际是背后的继承在起override的作用,你甚至可以定义接口进行接口的限制,利用编译器来验证上述操作是否发生错误。但也无关紧要、在窗体创建初期执行上述步骤,往往是窗体复杂度最低的时刻。
 
这一解决方案主要思路是去除partial的作用,并利用继承的机制。所以实际是把desginer.cs和xx.cs进行混和成为单一的类,抛出编译合并的步骤。故而会相应的增加代码的长度,复杂度也就相应的有所增加。这需要取决你你看重“方便性”还是"智力可管理性"。但只要使用了良好的代码收缩和布局,是可以隐藏和屏蔽哪些不需要关注的代码的。
 
 

posted on 2015-01-26 09:26  goodboyLu  阅读(372)  评论(0)    收藏  举报

导航