Criar um controle de caixa de ferramentas do Windows Forms
O modelo de item de controle da caixa de ferramentas do Windows Forms incluído no Visual Studio Extensibility Tools (VSSDK) permite criar 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 da Caixa de Ferramentas
O modelo de controle de caixa de ferramentas do Windows Forms cria um controle de usuário indefinido e fornece todas as funcionalidades necessárias para adicionar o controle à caixa de ferramentas.
Criar uma extensão com um controle da caixa de ferramentas do Windows Forms
Criar um projeto VSIC com o nome de
MyWinFormsControl
. Você pode encontrar o modelo de projeto VSIX na caixa de diálogo Novo Projeto pesquisando por "vsix".Quando o projeto for aberto, adicione um modelo de item Controle da Caixa de Ferramentas do Windows Forms 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, acesse Visual C#>Extensibility e selecione Controle da Caixa de Ferramentas do Windows FormsIsso adiciona um controle de usuário, um
ProvideToolboxControlAttribute
RegistrationAttribute para colocar o controle na Caixa de Ferramentas e uma entrada de ativo Microsoft.VisualStudio.ToolboxControl no manifesto do VSIX para implantação.
Criar uma interface do usuário para o controle
O controle Counter
requer dois controles filho: Label para exibir a contagem atual e Button 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 Counter.cs para abri-lo no designer.
Remova o botão Clique aqui! incluído por padrão quando você adiciona o modelo do item de Controle da Caixa de Ferramentas do Windows Forms.
Na Caixa de Ferramentas, arraste um controle
Label
e, em seguida, um controleButton
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 valores a seguir para os controles na superfície de design.
Controle Propriedade Valor Label1
Text "" Button1
Nome btnReset Button1
Text Reset
Codificar o controle do usuário
O controle Counter
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 o botão Redefinir deve ser mostrado ou ocultado. O atributo ProvideToolboxControl
determina onde, na Caixa de Ferramentas, o controle Counter
aparecerá.
Para codificar o controle do 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
Value
somente leitura, mas não podem definir o valor diretamente.Coloque o código a seguir no evento
Load
para o controle.private void Counter_Load(object sender, EventArgs e) { currentValue = 0; label1.Text = Message + Value; }
Definir o texto Label no evento Load 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 método público a seguir para incrementar o contador.
public void Increment() { currentValue++; label1.Text = displayText + Value; Incremented(this, EventArgs.Empty); }
Adicione uma declaração para o evento
Incremented
à 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 eventos
btnReset_Click
. Em seguida, preencha 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
ProvideToolboxControl
e a definição de classe ajustada.[ProvideToolboxControl("General", false)] public partial class Counter : UserControl
Testar o controle
Para testar um controle da Caixa de Ferramentas, 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.
Esse 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 do aplicativo 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 controle
Counter
deve ser exibido na seção Geral.Arraste um controle
Counter
até o formulário e selecione-o. As propriedadesValue
,Message
eShowReset
serão exibidas na janela Propriedades, juntamente com as propriedades herdadas do UserControl.Defina a propriedade
Message
comoCount:
.Arraste um controle Button até o formulário e defina as propriedades name e text do botão como
Test
.Clique duas vezes no botão para abrir Form1.cs na visualizaçã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.O Visual Studio gera um manipulador no nível do formulário para o evento
counter1.Incremented
.Realce a instrução
Throw
no manipulador de eventos, digitembox
e pressione Tab duas vezes para gerar uma caixa de mensagem a partir do snippet de código mbox.Na próxima linha, adicione o bloco
if
/else
a seguir 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 controle
Counter
exibe o texto a seguir.Contagem: 0
Selecione Testar.
O contador é incrementado, 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 a cada vez.
O botão Redefinir reaparece.
Selecione Restaurar.
O contador é redefinido para 0.
Próximas etapas
Quando você cria um controle da Caixa de Ferramentas, 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.