Come inserire un UserControl nel ToolBox di Visual Studio


93

Ho creato un controllo utente nel mio progetto e, dopo averlo compilato, devo metterlo nella mia cassetta degli attrezzi e usarlo come controllo comune. ma non posso. si UserControltrova nello spazio dei nomi del mio progetto e ho provato Choose Itemnel menu di scelta rapida, ma non ho trovato un modo per aggiungerlo.

Risposte:


114

Suppongo che tu stia utilizzando VS2010 (questo è ciò che hai etichettato come la domanda) Ho avuto problemi a farli aggiungere automaticamente alla casella degli strumenti come in VS2008 / 2005. In realtà c'è un'opzione per interrompere il popolamento automatico della casella degli strumenti!

Vai a Strumenti> Opzioni> Progettazione Windows Form> Generale

In fondo all'elenco troverai Toolbox> AutoToolboxPopulate che in una nuova installazione è impostato su False. Impostalo vero e quindi ricostruisci la tua soluzione.

Ciao, i controlli utente nella tua soluzione dovrebbero essere aggiunti automaticamente alla casella degli strumenti. Potrebbe essere necessario ricaricare anche la soluzione.


31
La parola chiave qui per me era "ricostruire" ... non ci avevo provato, d'oh! Farlo da solo ha risolto questo problema per me.
Danny Beckett

2
E ho dovuto riaprire la soluzione dopo la ricostruzione
Jim Lahman il

1
In VS2012 ora hanno aggiunto il suggerimento "La soluzione corrente deve essere riaperta affinché questa abbia effetto" alla finestra di dialogo delle opzioni.
Carlos P

2
@AnatoliiGumennyi Dovrai seguire le istruzioni di @ Arseny se non UserControlrientra nel progetto corrente.
Attacktive

2
Nota: sembra che in VS2013, l'impostazione Casella degli strumenti> AutoToolboxPopulate ora sia impostata su True alla nuova installazione.
Burmudgeon

35

Fare clic con il tasto destro sulla barra degli strumenti, quindi fare clic su "scegli elemento" nel menu contestuale. Viene visualizzata una finestra di dialogo con i componenti registrati. in questa finestra di dialogo fare clic su "Sfoglia" per selezionare l'assieme con il controllo utente che si desidera utilizzare.

PS. Questa assemblea dovrebbe essere registrata prima.


17
Puoi spiegare "registrato prima"? Non credo sia necessario.
Henk Holterman

25

Ho scoperto che il controllo utente deve avere un costruttore senza parametri o non verrà visualizzato nell'elenco. almeno questo era vero nel vs2005.


8
Anche in vs2012.
colbybhearn

8
Anche nel vs2013.
Connor McGuinness

6
Anche nel vs2015?
serdar

5
Sì anche in vs2015
JRB

5
Aggiungi vs2017 alla lista
Ryan

14

Utilizzando VS 2010:

Supponiamo che tu abbia un progetto Windows.Forms. Aggiungete un UserControl (diciamo MyControl) al progetto e progettate tutto. Ora vuoi aggiungerlo alla tua cassetta degli attrezzi.

Non appena il progetto viene creato con successo una volta, apparirà nei componenti del framework. Fare clic con il pulsante destro del mouse sulla casella degli strumenti per ottenere il menu di scelta rapida, selezionare "Scegli elementi ..." e individuare il nome del controllo (MyControl) nella scheda "Componenti .NET Framework".

Vantaggio rispetto all'utilizzo di dll: puoi modificare i controlli nello stesso progetto del tuo modulo e il modulo verrà costruito con i nuovi controlli. Tuttavia, il controllo sarà disponibile solo per questo progetto.

Nota: se il controllo presenta errori di compilazione, risolverli prima di passare ai moduli contenenti, altrimenti il ​​progettista ha un attacco di cuore.


1
Potrebbe essere disponibile anche per altri progetti se importi il ​​file .exe nella casella degli strumenti.
Sebastian

1
Qualsiasi risposta contenente "o il designer ha un attacco di cuore" ottiene il mio voto!
Joel

Ho fatto la stessa cosa ed è tutto a posto, ma quando ho spostato il codice in un altro progetto, ho creato una dll e ho fatto riferimento al file dll, il controllo personalizzato non viene visualizzato.
Fandi Susanto

6

Avevo molti controlli utente, ma uno si rifiutava di essere visualizzato nella casella degli strumenti , anche se ho ricostruito la soluzione ed è stata selezionata nella finestra di dialogo Scegli elementi ...

Soluzione:

  1. Da Esplora soluzioni ho fatto clic con il pulsante destro del mouse sul file di controllo utente incriminato e ho selezionato Escludi dal progetto
  2. Ricostruire la soluzione
  3. Fare clic con il pulsante destro del mouse sul controllo utente e selezionare Includi nel progetto (supponendo che Mostra tutti i file sia abilitato in Esplora soluzioni )

Nota che questo richiede anche di avere l' opzione AutoToolboxPopulate abilitata. Come suggerisce la risposta di @DaveF.

Soluzione alternativa: non sono sicuro che funzioni e non ho potuto provarlo poiché ho già risolto il mio problema, ma se hai deselezionato il controllo utente dalla finestra di dialogo Scegli elementi ... , premi OK, quindi lo apri di nuovo e verificato il controllo utente. Potrebbe anche funzionare.


3

Ci sono un paio di modi.

  1. Nel progetto originale, scegli File | Esporta modello,
    quindi seleziona ItemTemplate e segui la procedura guidata.

  2. Spostare il controllo utente in una ClassLibrary separata (e correggere gli spazi dei nomi, ecc.).
    Aggiungi un riferimento alla libreria di classi da Progetti che ne hanno bisogno. Non preoccuparti del GAC o altro, solo il file DLL.

Non consiglierei di mettere un UserControl nella normale casella degli strumenti, ma può essere fatto. Vedi la risposta di @Arseny


Questo sembra l'approccio migliore. L'unico inconveniente è che non puoi modificare visivamente il controllo (o almeno non ho trovato come).
Sebastian

Non importa, ho aggiunto il modello come elemento e il designer sta mostrando.
Sebastian

Sono totalmente d'accordo e sconsiglio vivamente anche di non collegare a una DLL se il progetto che contiene UserControl è nella stessa soluzione. E funzionerà con una DLL, cioè l'UserControl nel Progetto Libreria apparirà in ogni progetto WinForms che fa riferimento alla libreria (dopo una ricostruzione, ovviamente ;-)).
Xan-Kun Clark-Davis

2

Nel mio caso, non sono riuscito a vedere nessuno dei controlli nel progetto. Solo facendo clic con il pulsante destro del mouse su ToolBox e selezionando "Mostra tutto" li ho visti, ma erano disabilitati ...

La modifica del tipo di progetto dall'applicazione Windows a ClassLibrary ha apportato la correzione.


1

Domande di base se si utilizzano generici nel controllo di base. Se si:

diciamo di avere il controllo:

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

MyComboDropDown non consentirà di aprire il designer su di esso e non verrà mostrato nella casella degli strumenti. Perché? Perché il controllo di base non è già compilato, quando viene rispettato MyComboDropDown. Puoi modificare questo:

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

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Dopo la ricostruzione e il ripristino della casella degli strumenti dovrebbe essere in grado di vedere MyComboDropDown nel designer e anche nella casella degli strumenti



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.