WinForm窗体继承
在Windows应用程序中,从现有的窗体继承,查看子窗体的设计视图时,会出现错误:
服务容器中已存在服务 System.Windows.Forms.Design.IEventHandlerService。参数名: serviceType
或出现错误:未将对象引用设置到对象的实例。
解决方法:
把父窗体中Form_Load事件里所有代码都放在!DesignMode里,即
private void Form_Load(...)
{
if(!DesignMode)
{
//代码放在这儿
}
}
如果父窗体的构造方法中也有自己写的代码,也得放if(!DesignMode)里。
然后重新生成项目,即可看到子窗体的设计视图。
继承过来的子窗体,窗体上的控件都处在锁定状态,如果要编辑,需要在控件的属性面板中把控件的Modifiers属性改成public。
拣尽寒枝不肯栖,寂寞沙洲。