9

Cuando intenta abrir en modo de diseño de una forma (VB.NET), en el que tengo un control de usuario personalizada, veo el mensaje desde Visual Studio:Visual Studio mensaje Diseñador

--------------------------- 
Microsoft Visual Studio 
--------------------------- 
The control MyNamespace.MyUserControl has thrown an unhandled exception 
in the designer and has been disabled. 

Exception: 
Cannot access a disposed object. 
Object name: 'SplitterPanel'. 

Stack trace: 
--------------------------- 
OK 
--------------------------- 

Y la forma no es mostrado en el diseñador. ¿Qué hacer?

+0

Tengo el mismo error en C# – Zyku

Respuesta

3

Cargue el proyecto con el modo de depuración, y ponga un punto de interrupción en la función InitializeComponent() para su control de usuario. Es posible que haya algún error que esté desechando un objeto llamado SplitterPanel y luego intente acceder a él después. Esta inicialización se ejecuta cuando Visual Studio intenta renderizar el control, lo que genera el error que está viendo.

+0

Gracias, Yaakov. Pongo un punto de interrupción en el InitializeComponent, pero en el modo de diseño no me detengo ... el MYUserControl se muestra bien en el Diseñador. Pero no deja la forma en que se hospeda para que se muestre. – serhio

+0

Tengo en el UserControl un SplitContainer, pero cualquier elemento llamado SplitterPanel ... – serhio

+0

) relacionado: http://connect.microsoft.com/VisualStudio/feedback/details/540882/the-control-control-has-thrown-an -unhandled-exception-in-the-designer-and-has-been-disabled – serhio

2

Tienes que buscar en el diseñador de tu formulario, para la llamada del método Dispose en el método InitializeComponent. Algo así escribiría:

Me.SplitterPanel.Dispose() 

Debido a esto, el objeto de llamada se destruye en el diseñador. Entonces ya no existe para mostrar y hacer uso de él.

La eliminación de esta línea resolverá el problema.

2

quitar el atributo

<System.Diagnostics.DebuggerStepThrough()> _ 

De InitializeComponent() en el interior del diseñador. Esto te permitirá pasar por el diseñador. Para averiguar exactamente donde se produce la excepción, también se puede romper cuando una excepción es lanzada por CLR

menú Depurar excepciones >>> >>> marcar la casilla "Excepciones Common Language Runtime", "Arrojado"

Con estos dos pasos, debe poder romper donde se lanza la excepción.

Cuestiones relacionadas