2010-08-10 40 views
78

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.Cómo poner un UserControl en Visual Studio toolbox

Respuesta

95

Supongo que está utilizando VS2010 (es por eso que ha etiquetado la pregunta como) Tuve problemas para que se agreguen automáticamente a la caja de herramientas como en VS2008/2005. ¡Hay una opción para detener la caja de herramientas automáticamente!

Vaya a Herramientas> Opciones> Windows Forms Designer> General

En la parte inferior de la lista encontrará Herramientas> AutoToolboxPopulate el cual en una nueva instalación por defecto es falso. Establezca su verdadero valor y luego reconstruya su solución.

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

+22

La palabra clave aquí para mí era "reconstruir" ... no había probado que, D'oh! Hacer eso solo ordenó esto para mí. –

+2

Y tuve que volver a abrir la solución después de la reconstrucción –

+1

En VS2012, ahora han agregado la sugerencia "La solución actual debe volver a abrirse para que esto surta efecto" en el cuadro de diálogo de opciones. –

1

Por lo que sé, puede arrastrar & soltar su control de usuario en su proyecto actual a la caja de herramientas. El problema es que cuando eliges un proyecto diferente, el control del usuario desaparece. Por lo tanto, creo que debe crear 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, compilarlo, y usted tendrá un archivo dll (se puede encontrar fácilmente en la carpeta bin/debug de proyectos).

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

+0

que arrastrarse y soltarse, pero no pasó nada. – Saeed

+0

arrastrar y soltar sólo funciona en Windows Forms – MUG4N

+2

que arrastrarlo y dice que "el control del usuario añadió" pero no está allí. Esto apesta. Solo quiero un control simple para usar en mi proyecto sin crear un nuevo proyecto. –

31

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.

PS. Este conjunto debe registrarse antes.

+13

¿Puedes explicar 'registrado antes'? No creo que sea obligatorio. –

4

Hay un par de maneras.

  1. en su proyecto original, seleccione Archivo | Exportar plantilla
    A continuación, seleccione ItemTemplate y siga el 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 Caja de herramientas normal, pero se puede hacer. Ver la respuesta de @Arseny

+0

Este parece ser el mejor enfoque. El único inconveniente es que no puedes editar el control visualmente (o al menos no encontré cómo). – Sebastian

+0

No importa, agregué la plantilla como elemento y se muestra el diseñador. – Sebastian

+0

Estoy totalmente de acuerdo y también recomendaría encarecidamente no vincular a una DLL si el proyecto que contiene el UserControl está en la misma solución. Y funcionará con una DLL, es decir, el UserControl en el Proyecto de la Biblioteca aparecerá en cualquier proyecto de WinForms que haga referencia a la biblioteca (después de una reconstrucción, por supuesto ;-)). –

14

El uso de VS 2010:

Digamos que usted 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 haya creado con éxito una vez, aparecerá en sus Componentes de 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 compilará con los nuevos controles. Sin embargo, el control solo estará disponible para este proyecto.

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

+1

También podría estar disponible para otros proyectos si importa el .exe en la caja de herramientas. – Sebastian

+1

¡Cualquier respuesta que contenga "o el diseñador tiene un ataque al corazón" recibe mi voto! – Joel

+0

me hicieron lo mismo y todo es bueno, pero cuando me cambiaron el código en otro proyecto, crear un archivo DLL, y hacen referencia al archivo DLL, el control personalizado no aparece. –

19

Encontré 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.

+6

También en vs2010. –

+5

También en vs2012. – colbybhearn

+5

También en vs2013. –

5

tuve muchos controles de los usuarios, pero se negó a mostrar en el cuadro de herramientas , a pesar de que reconstruyó la solución y se comprobó en los Elegir elementos ... de diálogo.

Solución:

  1. De Explorador de soluciones I derecho del Seguido el archivo de control de usuario infractor y seleccionados excluir de Proyecto
  2. Reconstruir la solución
  3. Haga clic con el control de usuario y seleccione Incluir en el proyecto (suponiendo que tiene el Mostrar todos los archivos habilitada en el Explorador de soluciones )

Nota esto también requiere que usted tiene la opción deAutoToolboxPopulate habilitado. Como lo sugiere la respuesta @DaveF.

solución alternativa: No estoy seguro de si esto funciona, y no pude probarlo ya que ya resolví mi problema, pero si se toman medidas, la de control de usuario desde el Elegir elementos ... de diálogo, pulse Aceptar , luego lo volvió a abrir y comprobó el control del usuario. Eso también podría funcionar.

0

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

1

Pregunta básica si usa genéricos en su control de base. En caso afirmativo:

digamos que tenemos el control:

public class MyComboDropDown : ComboDropDownComon<MyType> 
{ 
    public MyComboDropDown() { } 
} 

MyComboDropDown no permitirá que el diseñador para abrir en él y se no se muestra en la caja de herramientas. ¿Por qué? Porque el control base no está ya compilado, cuando se cumple MyComboDropDown. Puede modificar a esto:

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

public class MyComboDropDownBase : ComboDropDownComon<MyType> 
{ 

} 

que después de reconstruir y restablecer caja de herramientas que debería ser capaz de ver en MyComboDropDown diseñador y también en la caja de herramientas

2

En mi caso, yo no podía ver ninguna de las controles en el proyecto. Sólo cuando hacen clic derecho en la caja de herramientas y seleccionando la opción "Mostrar todos" los vi, pero todavía tenían un impedimento ...

Cambio del tipo de proyecto de aplicación de Windows para ClassLibrary hizo la corrección.

+0

Alternar "Mostrar todo" funcionó para mí, como ya estaba configurado. –

Cuestiones relacionadas