Exception im Designer bei abgeleiteteten usercontrols

13/01/2009 - 10:51 von Michael Meier | Report spam
system:
- visual studio team system 2008 sp1
- .net framework 3.5 sp1
- win vista ultimate


folgende Vererbungshierarchie:

namespace Promess.Abgleichtool.UserControls {
public class BaseUserControl : UserControl{
//...
}
}

namespace Promess.Abgleichtool.UserControls {
public class ucAnalogChannelValue :
Promess.Abgleichtool.UserControls.BaseUserControl, IComparable {
//...
}
}

bis hierhin funktioniert alle prima, aber JETZT:
noch ein neues UserControl dazu:

namespace Promess.Abgleichtool.UserControls {
public class ucMultipleAnalogChannelValue :
Promess.Abgleichtool.UserControls.ucAnalogChannelValue {
//...
}
}


und wenn ich nun ucMultipleAnalogChannelValue im Designer anzeigen will
(das Control wurde lediglich erzeugt, ich hab da noch kein einziges byte
quelltext getippt), bekomme ich eine Fehlermeldung:
There is already a command handler for the menu command
'5efc7975-14bc-11cf-9b2b-00aa00573819 : 17'

at System.ComponentModel.Design.MenuCommandService.AddCommand(MenuCommand
command)
at
System.Windows.Forms.Design.Behavior.BehaviorService.MenuCommandHandler.System.ComponentModel.Design.IMenuCommandService.AddCommand(MenuCommand
command)
at
Microsoft.VisualBasic.PowerPacks.Design.MenuCommandHandler.AddCommand(MenuCommand
command)
at System.Windows.Forms.Design.CommandSet..ctor(ISite site)
at System.Windows.Forms.Design.ControlCommandSet..ctor(ISite site)
at System.Windows.Forms.Design.DocumentDesigner.Initialize(IComponent
component)
at
System.ComponentModel.Design.DesignerHost.AddToContainerPostProcess(IComponent
component, String name, IContainer containerToAddTo)
at System.ComponentModel.Design.DesignerHost.Add(IComponent component,
String name)
at
System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type
componentType, String name)
at
System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type
type, ICollection arguments, String name, Boolean addToContainer)
at
System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type
type, ICollection arguments, String name, Boolean addToContainer)
at
System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager
manager, CodeTypeDeclaration declaration)
at
System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
manager)
at
Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
serializationManager)
at
System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost
host)



google meint dazu leider nichts, das mich schlauer machen würde, mal
abgesehen von manchen, die was sagten von "designerfesnetr schließen und
wieder öffnen". nach einigem hinhin und her "studio schließen, obj löschen
usw." schaff ich es bis zu folgendem fehler:

The service System.Windows.Forms.Design.IEventHandlerService already
exists in the service container. Parameter name: serviceType

stacktrace:
at System.ComponentModel.Design.ServiceContainer.AddService(Type
serviceType, ServiceCreatorCallback callback, Boolean promote)
at System.ComponentModel.Design.ServiceContainer.AddService(Type
serviceType, ServiceCreatorCallback callback)
at
System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IServiceContainer.AddService(Type
serviceType, ServiceCreatorCallback callback)
at System.Windows.Forms.Design.DocumentDesigner.Initialize(IComponent
component)
at
System.ComponentModel.Design.DesignerHost.AddToContainerPostProcess(IComponent
component, String name, IContainer containerToAddTo)
at System.ComponentModel.Design.DesignerHost.Add(IComponent component,
String name)
at
System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type
componentType, String name)
at
System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type
type, ICollection arguments, String name, Boolean addToContainer)
at
System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type
type, ICollection arguments, String name, Boolean addToContainer)
at
System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager
manager, CodeTypeDeclaration declaration)
at
System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
manager)
at
Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
serializationManager)
at
System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost
host)

desigenr schließen-öffnen führt dann wieder zum ersten fehler


compilieren und laufen tut alles einwandfrei, aber ohne designer is schon
doof.
jemand hinweise?


micha
 

Lesen sie die antworten

#1 Carsten Unterberg
14/01/2009 - 11:09 | Warnen spam
Hallo Michael,


"Michael Meier" schrieb im Newsbeitrag
news:
system:
- visual studio team system 2008 sp1
- .net framework 3.5 sp1
- win vista ultimate



Dein Entwicklungssystem hab ich nicht, ich arbeite mit
-XpSp3
-Vs.Net 2008 Sp1
-.Net 3.5 Sp1


folgende Vererbungshierarchie:

namespace Promess.Abgleichtool.UserControls {
public class BaseUserControl : UserControl{
//...
}
}

namespace Promess.Abgleichtool.UserControls {
public class ucAnalogChannelValue :
Promess.Abgleichtool.UserControls.BaseUserControl, IComparable {
//...
}
}

bis hierhin funktioniert alle prima, aber JETZT:
noch ein neues UserControl dazu:

namespace Promess.Abgleichtool.UserControls {
public class ucMultipleAnalogChannelValue :
Promess.Abgleichtool.UserControls.ucAnalogChannelValue {
//...
}
}


und wenn ich nun ucMultipleAnalogChannelValue im Designer anzeigen will
(das Control wurde lediglich erzeugt, ich hab da noch kein einziges byte
quelltext getippt), bekomme ich eine Fehlermeldung:
There is already a command handler for the menu command
'5efc7975-14bc-11cf-9b2b-00aa00573819 : 17'

at System.ComponentModel.Design.MenuCommandService.AddCommand(MenuCommand
command)
at
System.Windows.Forms.Design.Behavior.BehaviorService.MenuCommandHandler.System.ComponentModel.Design.IMenuCommandService.AddCommand(MenuCommand
command)
at
Microsoft.VisualBasic.PowerPacks.Design.MenuCommandHandler.AddCommand(MenuCommand
command)
at System.Windows.Forms.Design.CommandSet..ctor(ISite site)
at System.Windows.Forms.Design.ControlCommandSet..ctor(ISite site)
at System.Windows.Forms.Design.DocumentDesigner.Initialize(IComponent
component)
at
System.ComponentModel.Design.DesignerHost.AddToContainerPostProcess(IComponent
component, String name, IContainer containerToAddTo)
at System.ComponentModel.Design.DesignerHost.Add(IComponent component,
String name)
at
System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type
componentType, String name)
at
System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type
type, ICollection arguments, String name, Boolean addToContainer)
at
System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type
type, ICollection arguments, String name, Boolean addToContainer)
at
System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager
manager, CodeTypeDeclaration declaration)
at
System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
manager)
at
Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
serializationManager)
at
System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost
host)



google meint dazu leider nichts, das mich schlauer machen würde, mal
abgesehen von manchen, die was sagten von "designerfesnetr schließen und
wieder öffnen". nach einigem hinhin und her "studio schließen, obj löschen
usw." schaff ich es bis zu folgendem fehler:

The service System.Windows.Forms.Design.IEventHandlerService already
exists in the service container. Parameter name: serviceType

stacktrace:
at System.ComponentModel.Design.ServiceContainer.AddService(Type
serviceType, ServiceCreatorCallback callback, Boolean promote)
at System.ComponentModel.Design.ServiceContainer.AddService(Type
serviceType, ServiceCreatorCallback callback)
at
System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IServiceContainer.AddService(Type
serviceType, ServiceCreatorCallback callback)
at System.Windows.Forms.Design.DocumentDesigner.Initialize(IComponent
component)
at
System.ComponentModel.Design.DesignerHost.AddToContainerPostProcess(IComponent
component, String name, IContainer containerToAddTo)
at System.ComponentModel.Design.DesignerHost.Add(IComponent component,
String name)
at
System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type
componentType, String name)
at
System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type
type, ICollection arguments, String name, Boolean addToContainer)
at
System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type
type, ICollection arguments, String name, Boolean addToContainer)
at
System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager
manager, CodeTypeDeclaration declaration)
at
System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
manager)
at
Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager
serializationManager)
at
System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost
host)

desigenr schließen-öffnen führt dann wieder zum ersten fehler



Ich hab meine Deine Steuerelemente so wie Du es beschrieben hast
'nachgebaut'. Bei mir traten beide von Dir genannten Fehler nicht auf.

Allerdings weiß ich nicht wie Du in 'ucAnalogChannelValue' das Interface
'ICompareable' implementiert hast. Ich habe, aus Zeitgründen' hier erstmal
'0' zurückgegeben.

compilieren und laufen tut alles einwandfrei, aber ohne designer is schon
doof.



Die Designer vom Visual Studio stellen sich manchmal etwas 'zickig' an,
wobei es in der Vorversionen noch schlimmer war.

jemand hinweise?




Ich hoffe Du hast noch nicht zuviel Arbeit in die drei Steuerelemente
investiert, denn ich würde Dir raten, alle drei noch einmal komplett zu
löschen und neu zu implementieren. Es könnte sein, dass sich Visual Studio
bei irgendwas 'verschluckt' hat, und es sich nur im Designer zeigt.

micha




MfG

Carsten Unterberg | Test-Framework
http://test-framework.blogspot.com/

Ähnliche fragen