Cómo poner un UserControl en Visual Studio toolBox

Hice un control de usuario en mi proyecto, y después de construir el proyecto, tengo que ponerlo en mi caja de herramientas y usarlo como un control común. pero no puedo el UserControl está en el espacio de nombres de mi proyecto, y probé Choose Item en el menú contextual, pero no encontré la manera de agregarlo.

Supongo que está usando VS2010 (así es como ha etiquetado la pregunta). Tuve problemas para que se agreguen automáticamente a la caja de herramientas como en VS2008 / 2005. ¡De hecho, hay una opción para detener la caja de herramientas automáticamente!

Vaya a Herramientas> Opciones> Diseñador de Windows Forms> General

En la parte inferior de la lista, encontrará Toolbox> AutoToolboxPopulate, que en una instalación nueva tiene como valor predeterminado False. Establezca su verdadero valor y luego reconstruya su solución.

Ojalá que los controles del usuario en tu solución se agreguen automáticamente a la caja de herramientas. Es posible que deba volver a cargar la solución también.

Haga clic derecho en la barra de herramientas y luego haga clic en “Elegir elemento” en el menú contextual. Aparece un diálogo con los componentes registrados. en este cuadro de diálogo, haga clic en “Buscar” para seleccionar su conjunto con el control de usuario que desea usar.

PD. Este conjunto debe registrarse antes.

Descubrí que el control de usuario debe tener un constructor sin parámetros o no aparecerá en la lista. al menos eso fue cierto en vs2005.

Usando VS 2010:

Supongamos que tiene un proyecto Windows.Forms. Agregue un UserControl (digamos MyControl) al proyecto y diseñe todo. Ahora quiere agregarlo a su caja de herramientas.

Tan pronto como el proyecto se construya con éxito una vez, aparecerá en sus Componentes del Framework. Haga clic con el botón derecho en la Caja de herramientas para obtener el menú contextual, seleccione “Elegir elementos …” y busque el nombre de su control (MyControl) en la pestaña “Componentes de .NET Framework”.

Ventaja sobre el uso de dlls: puede editar los controles en el mismo proyecto que su formulario, y el formulario se comstackrá con los nuevos controles. Sin embargo, el control solo estará disponible para este proyecto.

Nota: Si el control tiene errores de comstackción, resuélvalos antes de pasar a los formularios que lo contienen, o el diseñador tiene un ataque al corazón.

Tenía muchos controles de usuario, pero uno se negó a mostrarse en la Caja de herramientas , aunque reconstruí la solución y se verificó en el cuadro de diálogo Elegir elementos …

Solución:

  1. Desde Solution Explorer, hice clic con el botón derecho en el archivo de control del usuario infractor y seleccioné Excluir del proyecto
  2. Reconstruir la solución
  3. Haga clic con el botón derecho en el control del usuario y seleccione Incluir en proyecto (suponiendo que tiene el Mostrar todos los archivos habilitados en el Explorador de soluciones )

Tenga en cuenta que esto también requiere que tenga activada la opción AutoToolboxPopulate . Como lo sugiere la respuesta @DaveF.

Solución alternativa: no estoy seguro de si esto funciona, y no pude probarlo porque ya resolví mi problema, pero si desactivó el control de usuario en el cuadro de diálogo Elegir elementos … , presiona OK y luego vuelve a abrirlo. y verificó el control del usuario. Eso también podría funcionar.

Hay un par de maneras.

  1. En su proyecto original, elija Archivo | Exportar plantilla
    Luego seleccione ItemTemplate y siga al asistente.

  2. Mueva su UserControl a una ClassLibrary separada (y arregle los espacios de nombres, etc.).
    Agregue una referencia a la biblioteca de clases de Proyectos que lo necesitan. No te molestes con el GAC ni nada, solo el archivo DLL.

No aconsejaría poner un UserControl en la ToolBox normal, pero se puede hacer. Ver la respuesta de @Arseny

En mi caso, no pude ver ninguno de los controles en el proyecto. Solo al hacer clic derecho en toolbox y seleccionar “Mostrar todo” los vi, pero estaban deshabilitados …

Cambiar el tipo de proyecto de la aplicación de Windows a ClassLibrary hizo la corrección.

Por lo que sé, puedes arrastrar y soltar tu usercontrol en tu proyecto actual a la caja de herramientas. El problema es que cuando eliges un proyecto diferente, el control del usuario desaparece. Así que creo que tienes que construir un proyecto de biblioteca de control por separado:

En su solución, agregue un nuevo proyecto; sin embargo, como plantilla de proyecto, seleccione “Biblioteca de clases”. En ESE proyecto, agregue un control de usuario y haga todo lo que necesite hacer. Una vez hecho esto, comstackrlo, y usted tendrá un archivo dll (se puede encontrar fácilmente en la carpeta bin / debug de los proyectos).

Puede agregar este dll a su caja de herramientas (haga clic derecho en agregar …) y permanecerá allí en todos los proyectos.

Pregunta básica si usa generics en su control base. En caso afirmativo:

digamos que tenemos el control:

 public class MyComboDropDown : ComboDropDownComon { public MyComboDropDown() { } } 

MyComboDropDown no permitirá abrir el diseñador en él y no se mostrará en la Caja de herramientas. ¿Por qué? Porque el control base no está ya comstackdo, cuando se cumple MyComboDropDown. Puedes modificar esto:

 public class MyComboDropDown : MyComboDropDownBase { public MyComboDropDown() { } } public class MyComboDropDownBase : ComboDropDownComon { } 

Después de reconstruir y restablecer la caja de herramientas, debería poder ver MyComboDropDown en el diseñador y también en Toolbox

El problema con mi diseñador fue el problema de 32 contra 64 bit. Podría agregar el control a la caja de herramientas después de seguir las instrucciones en No se pueden agregar controles desde Ensambles de 64 bits a la Caja de herramientas o Usar en diseñadores dentro del artículo de Visual Studio IDE MS KB.

¡La recomstackción hizo el truco para mí!