tag propiedad c# .net winforms user-controls

propiedad tag c#



No se puede colocar el control de usuario en el formulario (8)

Creé una aplicación C # WinForms usando VS2010. Soy nuevo en la creación de controles de usuario, así que creé un nuevo control de usuario (como parte del mismo proyecto).

Cuando reconstruyo el proyecto, aparece el nuevo control en la caja de herramientas. Y cuando arrastro el control de la caja de herramientas a un formulario, aparece el siguiente error.

Error al cargar el elemento de la caja de herramientas ''TagGroup''. Se eliminará de la caja de herramientas.

Esto ocurrió la única vez que también creé un control de usuario. He buscado en la web, pero la mayoría de las respuestas que encontré parecían estar relacionadas con tener el control en un ensamblaje separado. (Tenga en cuenta que encontré muchas preguntas con el mismo problema que estoy teniendo).

¿Alguien puede sugerir dónde debería mirar a continuación?


¡Una hora de resolución de problemas confusa y cansada a las 3:36 a.m. vuelve a resolverse fácilmente con una mente fresca al día siguiente!
Arreglé un simple error de ortografía en el nombre de archivo del control, por lo que ahora coincidía con el nombre de UserControl, se limpió y se reconstruyó y Bobs, el gato de tu extraño tío. :]


El mismo problema aqui. Supongo que está relacionado con el hecho de que el VS2010 instalado en el sistema operativo x64 sigue siendo un programa de 32 bits en el corazón.

Una solución alternativa que uno podría querer probar es simplemente abrir TheFormThisUserControlIsSupposedToBeAddedTo.Designer.cs y usar código para agregar el control de usuario. Básicamente, estás haciendo el trabajo sucio que se supone que el diseñador debe hacer.

No es tan difícil como parece, esp. teniendo en cuenta que probablemente ya hay un montón de código de muestra en ese archivo (por ejemplo, los botones que agregó con el Diseñador). La única parte difícil es averiguar las coordenadas correctas en el formulario para colocar el control.

El resultado final es que no se puede ver el control del usuario en Desinger, pero se agregan en la depuración / ejecución.


Finalmente me di cuenta de esto.

El proyecto con el que estoy trabajando usa dos conjuntos de biblioteca de clases. Aunque no tienen nada que ver con el control que estoy discutiendo, miré y vi que ambas bibliotecas tienen el objetivo de la plataforma en la pestaña Propiedades | Compilar establecida en "Cualquier CPU".

Por otro lado, mi aplicación tenía esta configuración establecida en "x64". Al cambiar la configuración de mi aplicación a "Cualquier CPU", ahora puedo colocar mis controles de usuario en mis formularios.

Imagínate...


Mi aplicación debe ser de 64 bits. Para utilizar controles de usuario personalizados en el diseñador, acabo de agregar un nuevo proyecto a mi solución. Este nuevo proyecto utiliza la configuración "AnyCPU" y contiene todos mis controles de usuario.

Mi solución contiene los siguientes proyectos:

  • MyApp, que es mi proyecto principal (aplicación Windows Form) compilado en 64 bits y haciendo referencia a mi segundo proyecto
  • MyApp.UI.UserControls (biblioteca de clases) se compila para " Cualquier CPU " y contiene todos mis controles de usuario

Funciona como un amuleto y está limpio.

Por cierto, hay un artículo de soporte de Microsoft sobre ese tema.

  • Acción: intenta utilizar un componente de 64 bits dentro del Entorno de desarrollo integrado (IDE) de Microsoft Visual Studio.
  • Causa del error: Este comportamiento es por diseño. Visual Studio es un proceso de 32 bits y, por lo tanto, solo puede ejecutar módulos de 32 bits. Si bien Visual Studio le permite agregar una referencia a un ensamblaje de 64 bits, realmente no puede compilar JIT en 64 bits y ejecutarlo en proceso.
  • Resolución:
    1. Reconstruya el ensamblaje utilizando la configuración "AnyCPU". Esto permitiría que el componente se ejecute dentro de un proceso de 32 bits (como Visual Studio) o en un proceso de 64 bits.
    2. Agregue el ensamblado como referencia y cargue el control dinámicamente en tiempo de ejecución. Aunque todavía no podrá usar el control dentro de cualquier diseñador dentro de Visual Studio, aún puede escribir el código necesario para crear una instancia del control y configurar sus propiedades en consecuencia.

Fuente: http://support.microsoft.com/kb/963017


También experimenté este problema pero la causa fue diferente. En mi caso, un componente (formulario) constructor o evento de carga invocó un método en otro lugar que usaba la reflexión para encontrar todas las clases que implementaban una interfaz determinada.

Si bien eso funciona bien en el tiempo de ejecución, generó la excepción mencionada anteriormente en el tiempo de diseño. (Escriba la excepción de inicialización con un tipo de excepción de carga como excepción interna).


Tuve este problema en VS2015 y la solución resultó ser simple.

Creé un control de usuario cortando y pegando algunos controles existentes de un formulario (con el objetivo de agruparlos en el control personalizado). El control personalizado estaba bien (sin errores de compilación), sin embargo, la eliminación de los controles del formulario existente significaba que la aplicación no se compilaba. Por supuesto, no poder agregar el nuevo control significaba que no podía actualizar el código que hace referencia a los controles anteriores con el código que hace referencia al control personalizado.

Todo lo que hice fue hackear y cortar (comentarios, crear controles temporales, etc.) para que toda la aplicación compilara. Después de compilar, descubrí que podía arrastrar el control personalizado al formulario (sin el error que provocó esta pregunta). Luego tuve que desempaquetar y desmarcar para que el código hiciera correctamente referencia al nuevo control personalizado.


Tuve este problema también, pero la respuesta no podría ser adecuada para mí. Mi proyecto tiene algunos problemas, solo puede apuntar a x86 y x64 por separado. En otras palabras, no puedo usar la configuración AnyCPU (eso es porque hago referencia a diferentes bibliotecas para cada configuración, ya que esas bibliotecas no se ajustan a AnyCPU).

La solución que se me ocurrió fue: cuando necesito usar el diseñador de formularios, cambio la configuración a x86. Haga el trabajo, luego vuelva a x64 y pruebe. El problema ocurre solo con el diseñador, pero la solución se crea y funciona bien.


Vaya a la propiedad del proyecto GO, a continuación, en la pestaña ''Crear'' y verifique que ''Plataforma de destino'' era ''AnyCPU''.