Criar um controle de caixa de ferramentas do Windows Forms
O modelo de item de controle de caixa de ferramentas do Windows Forms que está incluído no Visual Studio Extensibility Tools (VS SDK), permite que você crie um controle de caixa de ferramentas que é adicionado automaticamente quando a extensão é instalada. Este passo a passo mostra como usar o modelo para criar um controle de contador simples que você pode distribuir para outros usuários.
Criar o controle Toolbox
O modelo de controle da caixa de ferramentas do Windows Forms cria um controle de usuário indefinido e fornece toda a funcionalidade necessária para adicionar o controle à caixa de ferramentas.
Criar uma extensão com um controle de caixa de ferramentas do Windows Forms
Crie um projeto VSIX chamado
MyWinFormsControl
. Você pode encontrar o modelo de projeto VSIX na caixa de diálogo Novo projeto , procurando por "vsix".Quando o projeto for aberto, adicione um modelo de item de controle do Windows Forms Toolbox chamado
Counter
. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e selecione Adicionar>Novo Item. Na caixa de diálogo Adicionar Novo Item, vá para Visual C#>Extensibility e selecione Controle da Caixa de Ferramentas do Windows FormsIsso adiciona um controle de usuário, um para colocar o controle na caixa de ferramentas e uma entrada de
ProvideToolboxControlAttribute
RegistrationAttribute ativo Microsoft.VisualStudio.ToolboxControl no manifesto VSIX para implantação.
Criar uma interface de usuário para o controle
O Counter
controle requer dois controles filho: um para exibir a contagem atual e um LabelButton para redefinir a contagem para 0. Nenhum outro controle filho é necessário porque os chamadores incrementarão o contador programaticamente.
Para criar a interface do usuário
No Gerenciador de Soluções, clique duas vezes em Contador.cs para abri-lo no designer.
Remova o botão Clique Aqui ! que é incluído por padrão quando você adiciona o modelo de item de controle do Windows Forms Toolbox.
Na Caixa de Ferramentas, arraste um controle e, em seguida, um
Label
Button
controle abaixo dele para a superfície de design.Redimensione o controle de usuário geral para 150, 50 pixels e redimensione o controle de botão para 50, 20 pixels.
Na janela Propriedades, defina os seguintes valores para os controles na superfície de design.
Controle Propriedade Valor Label1
Texto "" Button1
Nome btnRedefinir Button1
Texto Restaurar
Codificar o controle de usuário
O Counter
controle irá expor um método para incrementar o contador, um evento a ser gerado sempre que o contador for incrementado, um botão Redefinir e três propriedades para armazenar a contagem atual, o texto de exibição e se deseja mostrar ou ocultar o botão Redefinir. O ProvideToolboxControl
atributo determina onde na caixa de ferramentas o Counter
controle aparecerá.
Para codificar o controle de usuário
Clique duas vezes no formulário para abrir seu manipulador de eventos de carregamento na janela de código.
Acima do método do manipulador de eventos, na classe de controle, crie um inteiro para armazenar o valor do contador e uma cadeia de caracteres para armazenar o texto de exibição, conforme mostrado no exemplo a seguir.
int currentValue; string displayText;
Crie as seguintes declarações de propriedade pública.
public int Value { get { return currentValue; } } public string Message { get { return displayText; } set { displayText = value; } } public bool ShowReset { get { return btnReset.Visible; } set { btnReset.Visible = value; } }
Os chamadores podem acessar essas propriedades para obter e definir o texto de exibição do contador e para mostrar ou ocultar o botão Redefinir . Os chamadores podem obter o valor atual da propriedade somente
Value
leitura, mas não podem definir o valor diretamente.Coloque o código a seguir no
Load
evento para o controle.private void Counter_Load(object sender, EventArgs e) { currentValue = 0; label1.Text = Message + Value; }
A definição do texto Label no Load evento permite que as propriedades de destino sejam carregadas antes que seus valores sejam aplicados. Definir o texto Label no construtor resultaria em um Label vazio.
Crie o seguinte método público para incrementar o contador.
public void Increment() { currentValue++; label1.Text = displayText + Value; Incremented(this, EventArgs.Empty); }
Adicione uma declaração para o
Incremented
evento à classe de controle.public event EventHandler Incremented;
Os chamadores podem adicionar manipuladores a esse evento para responder a alterações no valor do contador.
Retorne ao modo de design e clique duas vezes no botão Redefinir para gerar o manipulador de
btnReset_Click
eventos. Em seguida, preencha-o conforme mostrado no exemplo a seguir.private void btnReset_Click(object sender, EventArgs e) { currentValue = 0; label1.Text = displayText + Value; }
Imediatamente acima da definição de classe, na declaração de atributo
ProvideToolboxControl
, altere o valor do primeiro parâmetro de"MyWinFormsControl.Counter"
para"General"
. Isso define o nome do grupo de itens que hospedará o controle na Caixa de Ferramentas.O exemplo a seguir mostra o atributo e a
ProvideToolboxControl
definição de classe ajustada.[ProvideToolboxControl("General", false)] public partial class Counter : UserControl
Testar o controle
Para testar um controle Toolbox, primeiro teste-o no ambiente de desenvolvimento e, em seguida, teste-o em um aplicativo compilado.
Para testar o controle
Pressione F5 para iniciar a depuração.
Este comando cria o projeto e abre uma segunda instância experimental do Visual Studio que tem o controle instalado.
Na instância experimental do Visual Studio, crie um projeto de aplicativo do Windows Forms.
No Gerenciador de Soluções, clique duas vezes em Form1.cs para abri-lo no designer se ele ainda não estiver aberto.
Na caixa de ferramentas, o
Counter
controle deve ser exibido na seção Geral.Arraste um
Counter
controle para o formulário e selecione-o. AsValue
propriedades , eShowReset
serão exibidas na janela Propriedades,Message
juntamente com as propriedades herdadas do UserControl.Defina a propriedade
Message
comoCount:
.Arraste um Button controle para o formulário e defina as propriedades de nome e texto do botão como
Test
.Clique duas vezes no botão para abrir o Form1.cs no modo de exibição de código e criar um manipulador de cliques.
No manipulador de cliques, chame
counter1.Increment()
.Na função do construtor, após a chamada para
InitializeComponent
, digitecounter1``.``Incremented +=
e pressione Tab duas vezes.Visual Studio gera um manipulador de nível de formulário para o
counter1.Incremented
evento.Realce a
Throw
instrução no manipulador de eventos, digitembox
e pressione Tab duas vezes para gerar uma caixa de mensagem a partir do trecho de código mbox.Na próxima linha, adicione o bloco a seguir
if
/else
para definir a visibilidade do botão Redefinir .if (counter1.Value < 5) counter1.ShowReset = false; else counter1.ShowReset = true;
Pressione F5.
O formulário é aberto. O
Counter
controle exibe o texto a seguir.Contagem: 0
Selecione Testar.
O contador incrementa e o Visual Studio exibe uma caixa de mensagem.
Feche a caixa de mensagem.
O botão Redefinir desaparece.
Selecione Testar até que o contador atinja 5 fechando as caixas de mensagem de cada vez.
O botão Redefinir reaparece.
Selecione Restaurar.
O contador é redefinido para 0.
Próximas etapas
Quando você cria um controle Toolbox, o Visual Studio cria um arquivo chamado ProjectName.vsix na pasta \bin\debug\ do seu projeto. Você pode implantar o controle carregando o arquivo .vsix em uma rede ou em um site. Quando um usuário abre o arquivo .vsix, o controle é instalado e adicionado à caixa de ferramentas do Visual Studio no computador do usuário. Como alternativa, você pode carregar o arquivo .vsix no Visual Studio Marketplace para que os usuários possam encontrá-lo navegando na caixa de diálogo Extensões e atualizações de ferramentas>.