先设计了一个窗体Form1,后来一问改动小,又设计了一个窗体Form2,继承的代码为
public partial class Form2 : Form1
{
public frmMatTraceDialog()
{
InitializeComponent();
}
}
但之后设计器之中产生了如下的错误:
服务容器中已存在服务 System.Windows.Forms.Design.IEventHandlerService 参数名: serviceType 0 0
解决方案如下:
在基类的Form1中进行如下修改:
private void Form_Load(...)
{
if(!DesignMode)
{
//代码放在这儿
}
}
/// <summary>
/// 构造函数
/// </summary>
public frmBaseDialogBig()
{
if (!DesignMode)
{
InitializeComponent();
}
}
protected override void Dispose(bool disposing)
{
if (!DesignMode)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
}
即把相关的Load,构造函数等中的代码,都加一个 if (!DesignMode)的限定条件,即可;
注:如果仍然不可以就再清理一个解决方案,然后生成;再不行就重新启动一下程序或者计算机
本人已验证,方法可行,已继承成功
在C#中尝试继承窗体时遇到设计器错误:服务容器中已存在服务 System.Windows.Forms.Design.IEventHandlerService。解决方案是在基类的Form1中,将Load、构造函数等代码块用 `if (!DesignMode)` 条件包裹,确保只在运行时执行。如果问题依然存在,可以尝试清理解决方案、重新生成,甚至重启程序或计算机。
1590





