2012-09-12 10 views
13

He escrito un pequeño System.Windows.Forms.UserControl, llámalo userControl1, que parece estar funcionando como yo quiero.Mi UserControl se bloquea Visual Studio Siempre que lo agregue a un formulario

Desde el Diseñador de Visual Studio 2010, puedo arrastrar userControl1 desde la barra de herramientas y soltarlo en Windows Form al que llamaré testForm1. Puedo cablear userControl1, y funciona como debería.

Sin embargo, el propósito de userControl1 es poder usarlo en otro UserControl, llamémoslo userControl2.

Desde el Diseñador de Visual Studio 2010, si arrastro userControl1 desde la barra de herramientas y lo dejo caer en userControl2, Visual Studio 2010 se bloqueará sin otro mensaje que el de reiniciar.

screenshot

En este mismo tiempo, un error de aplicación se registra en el Visor de sucesos Evento ID 1000:

Faulting application name: devenv.exe, version: 10.0.40219.1, time stamp: 0x4d5f2a73 
Faulting module name: unknown, version: 0.0.0.0, time stamp: 0x00000000 
Exception code: 0xc00000fd 
Fault offset: 0x0965f816 
Faulting process id: 0x1580 
Faulting application start time: 0x01cd90f84338e443 
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe 
Faulting module path: unknown 
Report Id: 49ddcedf-fcf8-11e1-8016-00248103a942 

¿Cómo puedo ir a tratar de depurar este error? ¿Debo ver algo en userControl1 o userControl2?

algunas notas:

  • 1) también puede arrastrar un userControl2 de la barra de herramientas en testForm1, y funciona (es decir, pantallas) bien tanto en el diseñador de VS2010 y cuando funciono con la aplicación de prueba.

  • 2) He ido con éxito en el diseñador de userControl2 donde declaré y establecer todos los valores para userControl1, pero userControl1 no se mostrará en testForm1 cuando se ejecuta. Si selecciono userControl1 desde la ventana Propiedades de userControl2 en el Diseñador VS2010, Visual Studio se bloqueará.

  • 3) Me complace publicar el código, si esto ayuda. ¿Prefiere el código para userControl1 o userControl2? Aunque ambos controles son pequeñas, todavía hay una gran cantidad de código (sobre todo porque este error ya que podría existir en el diseñador, por lo que tendría que publicar eso, también.

+4

Ejecute dos instancias de Visual Studio, abra este proyecto en ambas instancias y en una de ellas use *** Adjuntar para procesar ...*** opción a la segunda instancia para depurarlo (* proceso devenv.exe *). Entonces debería poder ver cuál es la excepción. –

+3

Parte del código en su UserControl también se ejecuta en tiempo de diseño. Ese código tiene un error, desencadena una StackOverflowException. Un error bastante fatal, que también baja a VS. Busque los setters/getters de propiedad recursivos, comente cosas si no puede encontrarlas. –

+0

¿Se puede publicar un ejemplo de código? – bryanbcook

Respuesta

16

Parece que esto ayudó a resolver el problema, por lo Lo estoy publicando como una respuesta.

Para depurar su control cuando se utiliza en el diseñador de Visual Studio, ejecute dos instancias de Visual stu dio y abre su proyecto en ambas instancias. Luego, en una de las instancias use Adjunte para procesar ... opción y conéctela a la segunda instancia para depurarla (devenv.exe proceso). De esta manera, debería poder ver cuál es la excepción.

+1

Tenga en cuenta que Visual Studio podría no ser devenv.exe; para mí, ejecutando Visual Studio 2012 Express for Desktop, era WDExpress.exe, si no recuerdo mal. – ekolis

+1

Gracias me salvó hoy –

+0

Este enfoque fue mucho más fácil de lo que esperaba. Mi problema resultó ser un problema de control de versiones con una referencia a un control de terceros llamado desde un evento Load de UserControl anidado. – Giles

2

Hay algo probable en el constructor de su control que está intentando acceder a otro algo que no está disponible, o está creando una excepción que no puede ser capturada por el IDE (StackOverflow, OutOfMemory, etc.)

+1

Si Lukasz regresa y publica su comentario como respuesta, lo marcaré como la solución. Si no lo hace, puede actualizar su publicación agregando su comentario y marcaré la suya como respuesta. – jp2code

Cuestiones relacionadas