我正在开发一个基于Windows表单模板的Windows应用程序。我使用的是.NET 3.5版本。在这个应用程序中,目标是可以从App.Config文件(背景颜色、不同按钮的背景色等)管理不同窗体的所有视觉设置。
基本上,我有一个"FormBase“类,我的所有表单都继承它,这个类包含如下代码:
public class FormBase : Form
{
protected override void OnLoad(EventArgs e)
{
BackColor = Color.FromName(ConfigurationManager.AppSettings["backColor"]);
foreach (var item in this.Controls)
{
if (item is Button)
{
((Button)item).BackColor = Color.FromName(ConfigurationManager.AppSettings["buttonBackground"]);
((Button)item).ForeColor = Color.FromName(ConfigurationManager.AppSettings["buttonText"]);
}
if (item is ...)
{
//some other code
}
}
}
}
然后我有了我的App.Config文件,其中包含如下代码:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="buttonText" value="White"/>
<add key="buttonBackground" value="Red"/>
<add key="backColor" value="White"/>
<add key="textColor" value="Red"/>
</appSettings>
</configuration>
现在,在我所有表格的声明中
public partial class Form1 : FormBase
我的问题是,当我运行这个应用程序时,它运行得很好,而且工作正常,App.Config文件中的不同颜色就是显示在我的表单上的颜色。但是,当我只查看Visual中的设计器而不运行该应用程序时,设计器无法显示表单的外观,因此我得到以下错误
服务System.Windows.Forms.Design.IEventHandlerService已经存在于服务容器中。参数名称: serviceType
我不知道怎么解决这个问题。这不是什么大问题,因为这个应用程序运行正常,但这让我很困扰,我想知道发生了什么
发布于 2014-12-21 17:55:55
我自己也遇到了这个问题。根据另一个网页,此错误可以通过关闭visual studio和删除obj文件夹来修复,然后重新打开visual studio并重新构建项目。
这是我读过的那一页。http://www.csharp411.com/ieventhandlerservice-already-exists-in-the-service-container/
他们说也要删除bin文件夹,但我发现我不必这么做。希望这能有所帮助!
发布于 2016-05-09 16:05:06
虽然我仍然想更好地了解到底出了什么问题,但这对我起了作用。我正在Visual中创建继承的窗体。显然,Visual设计器在显示窗体之前调用Load函数。父窗口中的load函数正在被调用并访问窗体上的一个控件,这是抛出一个对象引用而不是设置为对象实例(为什么?)。
我的解决方案是在父窗体load函数的开头添加以下代码行。我正在使用VB,但它类似于C#。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If (DesignMode) Then Exit Sub
发布于 2015-01-19 06:53:08
我也遇到了这个问题。我试过了上面的解决方案,但对我没有用。我的结构是:
公共Form1 :表格 公共Form2 : Form1 公共Form3 : Form2
我尝试重新构建和删除obj/bin文件夹,但是无法使此错误消失。最后,作为正常检查,我将Form3更改为从Windows类继承:
System.Windows.Forms.Form
然后,我在设计器中重新打开了Form3,它出现了(正如我所预期的)。然后,我将Form3改为从Form2继承,并在设计器中重新打开Form3。而且起作用了。
#随机-错误-修复-胜利
祝好运!
https://stackoverflow.com/questions/24821737
复制相似问题