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 (VS SDK) 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

  1. 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".

  2. 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 Forms

  3. Isso 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

  1. No Gerenciador de Soluções, clique duas vezes em Counter.cs para abri-lo no designer.

  2. 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.

  3. Na Caixa de Ferramentas, arraste um controle Label e, em seguida, um controle Button abaixo dele para a superfície de design.

  4. Redimensione o controle de usuário geral para 150, 50 pixels e redimensione o controle de botão para 50, 20 pixels.

  5. 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 Restaurar

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

  1. Clique duas vezes no formulário para abrir seu manipulador de eventos de carregamento na janela de código.

  2. 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;
    
  3. 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.

  4. 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.

  5. Crie o método público a seguir para incrementar o contador.

    public void Increment()
    {
        currentValue++;
        label1.Text = displayText + Value;
        Incremented(this, EventArgs.Empty);
    }
    
    
  6. 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.

  7. 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;
    }
    
    
  8. 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

  1. 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.

  2. Na instância experimental do Visual Studio, crie um projeto do aplicativo Windows Forms.

  3. No Gerenciador de Soluções, clique duas vezes em Form1.cs para abri-lo no designer se ele ainda não estiver aberto.

  4. Na Caixa de Ferramentas, o controle Counter deve ser exibido na seção Geral.

  5. Arraste um controle Counter até o formulário e selecione-o. As propriedades Value, Message e ShowReset serão exibidas na janela Propriedades, juntamente com as propriedades herdadas do UserControl.

  6. Defina a propriedade Message como Count:.

  7. Arraste um controle Button até o formulário e defina as propriedades name e text do botão como Test.

  8. Clique duas vezes no botão para abrir Form1.cs na visualização de código e criar um manipulador de cliques.

  9. No manipulador de cliques, chame counter1.Increment().

  10. Na função do construtor, após a chamada para InitializeComponent, digite counter1``.``Incremented += e pressione Tab duas vezes.

    O Visual Studio gera um manipulador no nível do formulário para o evento counter1.Incremented.

  11. Realce a instrução Throw no manipulador de eventos, digite mbox e pressione Tab duas vezes para gerar uma caixa de mensagem a partir do snippet de código mbox.

  12. 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;
    
  13. Pressione F5.

    O formulário é aberto. O controle Counter exibe o texto a seguir.

    Contagem: 0

  14. Selecione Testar.

    O contador é incrementado, e o Visual Studio exibe uma caixa de mensagem.

  15. Feche a caixa de mensagem.

    O botão Redefinir desaparece.

  16. Selecione Testar até que o contador atinja 5 , fechando as caixas de mensagem a cada vez.

    O botão Redefinir reaparece.

  17. 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.