Como colocar um UserControl na caixa de ferramentas do Visual Studio


93

Fiz um usercontrol no meu projeto e, após construir o projeto, preciso colocá-lo na minha caixa de ferramentas e usá-lo como um controle comum. mas eu não posso. o UserControlé na minha namespace do projeto, e eu tentei Choose Itemno menu do botão direito, mas eu não encontrar uma maneira de adicioná-lo.

Respostas:


114

Presumo que você esteja usando o VS2010 (foi como você marcou a questão). Tive problemas para adicioná-los automaticamente à caixa de ferramentas como no VS2008 / 2005. Na verdade, existe uma opção para interromper o preenchimento automático da caixa de ferramentas!

Vá para Ferramentas> Opções> Windows Forms Designer> Geral

Na parte inferior da lista, você encontrará Toolbox> AutoToolboxPopulate, que em uma nova instalação é padronizado como False. Defina-o como verdadeiro e reconstrua sua solução.

Ei, pronto, os controles de usuário em sua solução devem ser adicionados automaticamente à caixa de ferramentas. Talvez seja necessário recarregar a solução também.


31
A palavra-chave aqui para mim era "reconstruir" ... não tinha tentado isso, d'oh! Fazer isso sozinho resolveu isso para mim.
Danny Beckett

2
E, eu tive que reabrir a solução após a reconstrução
Jim Lahman

1
No VS2012, eles agora adicionaram a dica 'A solução atual deve ser reaberta para que isso tenha efeito' ao diálogo de opções.
Carlos P

2
@AnatoliiGumennyi Você terá que seguir as instruções de @Arseny se UserControlestiver fora do projeto atual.
Ataque em

2
Nota: Parece que no VS2013, a configuração Toolbox> AutoToolboxPopulate agora é padronizada como True na instalação nova.
Curmudgeon de

35

Clique com o botão direito na barra de ferramentas e clique em "escolher item" no menu de contexto. Uma caixa de diálogo com componentes registrados é exibida. nesta caixa de diálogo, clique em "Navegar" para selecionar sua montagem com o controle de usuário que deseja usar.

PS. Esta montagem deve ser registrada antes.


17
Você pode explicar 'registrado antes'? Não acho que seja necessário.
Henk Holterman

25

Descobri que o controle de usuário deve ter um construtor sem parâmetros ou ele não aparecerá na lista. pelo menos isso era verdade no vs2005.


8
Também no vs2012.
colbybhearn

8
Também no vs2013.
Connor McGuinness

6
Também no vs2015?
serdar

5
Sim, também no vs2015
JRB de

5
Adicionar vs2017 à lista
Ryan

14

Usando o VS 2010:

Digamos que você tenha um projeto Windows.Forms. Você adiciona um UserControl (digamos MyControl) ao projeto e cria tudo. Agora você deseja adicioná-lo à sua caixa de ferramentas.

Assim que o projeto for construído com sucesso uma vez, ele aparecerá em seus componentes do Framework. Clique com o botão direito na caixa de ferramentas para obter o menu de contexto, selecione "Escolher itens ..." e navegue até o nome do seu controle (MyControl) na guia "Componentes do .NET Framework".

Vantagem sobre o uso de dlls: você pode editar os controles no mesmo projeto do seu formulário, e o formulário será construído com os novos controles. No entanto, o controle estará disponível apenas para este projeto.

Nota: Se o controle tiver erros de construção, resolva-os antes de prosseguir para os formulários que os contêm, ou o designer terá um ataque cardíaco.


1
Ele também pode estar disponível para outros projetos se você importar o .exe na caixa de ferramentas.
Sebastian

1
Qualquer resposta contendo "ou o designer teve um ataque cardíaco" tem meu voto!
Joel

Fiz a mesma coisa e está tudo bem, mas quando movi o código para outro projeto, criei uma dll e referenciei o arquivo dll, o controle personalizado não apareceu.
Fandi Susanto

6

Eu tinha muitos controles de usuário, mas um se recusou a mostrar na caixa de ferramentas , embora eu reconstruísse a solução e ela estivesse marcada na caixa de diálogo Escolher itens ...

Solução:

  1. De Solution Explorer I direito clicado o arquivo de controle de usuário ofensor e selecionou Excluir do Projeto
  2. Reconstrua a solução
  3. Clique com o botão direito do mouse no controle de usuário e selecione Incluir no Projeto (supondo que você tenha Mostrar todos os arquivos habilitado no Gerenciador de Soluções )

Observe que isso também requer que a opção AutoToolboxPopulate esteja ativada. Como a resposta de @DaveF sugere.

Solução alternativa: não tenho certeza se isso funciona e não poderia tentar porque já resolvi meu problema, mas se você desmarcou o controle do usuário na caixa de diálogo Escolher itens ... , clique em OK e abra-o novamente e verifiquei o controle do usuário. Isso também pode funcionar.


3

Existem algumas maneiras.

  1. Em seu projeto original, escolha Arquivo | Exportar modelo
    Em seguida, selecione ItemTemplate e siga o assistente.

  2. Mova seu UserControl para uma ClassLibrary separada (e corrija os namespaces etc.).
    Adicione um ref à biblioteca de classes de projetos que precisam dele. Não se preocupe com o GAC nem nada, apenas o arquivo DLL.

Eu não aconselharia colocar um UserControl na caixa de ferramentas normal, mas isso pode ser feito. Veja a resposta de @Arseny


Esta parece ser a melhor abordagem. A única desvantagem é que você não pode editar o controle visualmente (ou pelo menos não descobri como).
Sebastian

Esquece, adicionei o template como elemento e o designer está mostrando.
Sebastian

Concordo totalmente e também desaconselho fortemente vincular a uma DLL se o projeto que contém o UserControl estiver na mesma solução. E funcionará com uma DLL, ou seja, o UserControl no Projeto Biblioteca aparecerá em qualquer projeto WinForms que faça referência à biblioteca (após uma reconstrução, é claro ;-)).
Xan-Kun Clark-Davis

2

No meu caso, não consegui ver nenhum dos controles do projeto. Somente clicando com o botão direito na caixa de ferramentas e selecionando "Mostrar todos" eu os vi, mas ainda assim eles estavam desativados ...

Alterar o tipo de projeto do aplicativo do Windows para ClassLibrary fez a correção.


1

Pergunta básica se você estiver usando genéricos em seu controle de base. Se sim:

digamos que temos o controle:

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

MyComboDropDown não permitirá abrir o designer nele e não será mostrado na caixa de ferramentas. Por quê? Porque o controle básico ainda não está compilado - quando MyComboDropDown é compilado. Você pode modificar para este:

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

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Depois de reconstruir e redefinir a caixa de ferramentas, deve ser possível ver MyComboDropDown no designer e também na caixa de ferramentas



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.