"form Inheritence",it seems that it's intentionall MS BUG

Miha Markic :"Mother of all Visual Studio 2005 RTM bugs"

今天帮同事看一个vs2005的问题!

问题功能描述:在visual studio2005中实现一个基类的窗体,其它窗体继承于此窗体,目标是想实现窗体的重用,不用每个窗体都重新开始进行UI设计了。

出现问题:在实现相关label控制,trackBar等控制中都可以很好的完成相关继承。在继承窗体中,被继承窗体设置为private私有的控件不可编辑,protected,public的可编辑等都非常正常。但对于像datagridview,webbrowser的控件却即使在基窗体中设置为public,在vs2005设计环境中各控制的属性也显示恢色不可编辑。

问题分析解决流程:刚接触到此问题,乍一看好像是对datagridview控制不了解,或放是由于某属性设置错误所至,于是网上查找资料确认此判断是否准确,google到MS的MSDN中的关于窗体继承的相关文档,但经过仔细研究,比较失望的是其中也仅仅是介绍简单的lable等控件的设置介绍。看来只有另找其它了,经过慢长的搜索,终于发现了眉目,一个blog(http://code6421.blogspot.com/2005_09_01_code6421_archive.html)里面提到“被封印的Windows Form Inheritence. 不完全支持Form Inheritence,像DataGridView只允許ReadOnly继承”,看来上面我的推测是错误的,不仅仅设置的问题。接下来敢快google“datagridview Form Inheritence”,发现了一些关于此方面的贴子(http://www.thescripts.com/forum/thread496909.html)此贴子最重一位朋友的回复非常让人感兴趣:

“No, that's not that problem, it seems that it's intentionall MS BUG
(Sic!)....
I've found something like that
http://cs.rthand.com/blogs/blog_with_righthand/archive/2005/11/10/186.aspx
The only solution is to do all modyfikation in code (Sic !)....”

想不到考虑半天的问题,竟然是个bug,快速查看了blog文中提到的东西,印证了这个结论。
对于此问题,虽然在设计器中不能对datagridview控件进行设计,但仍可以在代码中进行控制,但相对来说,那有在设计器中控制来得快,难怪Miha Markic 说出"Mother of all Visual Studio 2005 RTM bugs"的话!

后计:上述问题,我在vs.net2003中测试发现,DataGrid控件并不存在类似问题。

希望这些东西能给大家帮助!

原文地址:https://www.cnblogs.com/linfuguo/p/490558.html