网上的东西真是害死人,大部分都是不负责的Ctrl+V来的
最近要做一个类似PPT的WINFORM程序,100多个页面,想到用基类来解决,不然会累到吐血的,自定义窗体/控件都很简单,可继承过来后的子窗体只要放一个控件上去,运行后控件就神秘消失了,但在属性窗口能看到,证实是存在的,GG之后发现这个问题还真是N多,解决方法就是:
1,据说不断打设计窗口N次
2.删除BIN中的vshost.exe文件
3.在Form.Designer.cs中 的窗体生成代码,应该默认是在 #region Windows 窗体设计器生成的代码 这部分的最后一节,加上如下代码:
this.Controls.Add(this.xxxxxx);
xxxxxx为新添加的控件名
经过我N次的努力尝试,都不行!!
网上大多给的是第3种解决方法,可惜我这里不行,也许是版本问题吧,本人的环境为:XP+VS2005 SP2 TEAM 版
其实还要,加上这样一句:
this.Controls.SetChildIndex(this.xxxxxx, 0);
后来想了下,也许是因为继承的父窗口中有个Panel,而Panel控件在继承后默认却是置顶的,挡住了继承后窗体上的控件,所以导致在继承后的窗体会看不到,有帖子还说是由于自定义控件的BUG,把SetChildIndex设置后,我又放上个自定义控件,也正常了!
PS:刚发现如果修改了InitializeComponent中的代码,只要你不管拖动了子窗体中的哪个控件,那你刚刚改的控件就又变成不可见了,刚添加的代码又消失了......这个BUG真NB了,好像VS2008,VS2010也都有.......
解决办法就是:
新添加控件后锁定控件,然后在属性窗口改位置,这样不会消失