Partilhar via


Solucionar problemas de criação de controle e de componente

Este tópico lista os seguintes problemas comuns que surgem ao desenvolver componentes e controles:

  • Não é possível adicionar o controle à caixa de ferramentas

  • Não é possível depurar o componente nem o controle de usuário do Windows Forms

  • O evento é gerado duas vezes no componente ou no controle herdado

  • Erro de tempo de design: "Falha em criar o componente 'Nome do Componente'"

  • STAThreadAttribute

  • O ícone do componente não aparece na caixa de ferramentas

Não é possível adicionar o controle à caixa de ferramentas

Se você quiser adicionar um controle personalizado criado em outro projeto ou um controle de terceiros à Caixa de Ferramentas, faça isso manualmente. Se o projeto atual contiver seu controle ou componente, ele deverá aparecer na Caixa de Ferramentas automaticamente. Para mais informações, consulte Instruções passo a passo: preenchendo de forma automática a caixa de ferramentas com componentes personalizados.

Para adicionar um controle à Caixa de Ferramentas

  1. Clique com o botão direito do mouse em Caixa de Ferramentas e selecione Escolher Itens no menu de atalho.

  2. Na caixa de diálogo Escolher Itens da Caixa de Ferramentas, adicione o componente:

    • Se você quiser adicionar um controle ou um componente do .NET Framework, clique na guia Componentes do .NET Framework.

      – ou –

    • Se você quiser adicionar um componente COM ou um controle ActiveX, clique na guia Componentes COM.

  3. Se o controle estiver listado na caixa de diálogo, confirme que ele está selecionado e, em seguida, clique em OK.

    O controle é adicionado à Caixa de Ferramentas.

  4. Se seu controle não estiver listado na caixa de diálogo, faça o seguinte:

    1. Clique no botão Procurar .

    2. Navegue até a pasta que contém o arquivo .dll com o controle.

    3. Selecione o arquivo .dll e clique em Abrir.

      Seu controle aparece na caixa de diálogo.

    4. Confirme que o controle está selecionado e, em seguida, clique em OK.

      Seu controle é adicionado à Caixa de Ferramentas.

Não é possível depurar o componente nem o controle de usuário do Windows Forms

Se seu controle deriva UserControl da classe, você pode depurar seu comportamento de tempo de execução com o contêiner de teste. Para obter mais informações, consulte How to: Test the Run-Time Behavior of a UserControl (Como testar o comportamento de tempo de execução de um UserControl).

Outros controles e componentes personalizados não são projetos autônomos. Eles devem ser hospedados por um aplicativo como um projeto do Windows Forms. Para depurar um controle ou um componente, adicione-o a um projeto do Windows Forms.

Para depurar um controle ou um componente

  1. No menu Compilar, clique em Compilar Solução para compilar sua solução.

  2. No menu Arquivo, escolha Adicionar e, em seguida, Novo Projeto para adicionar um projeto de teste ao seu aplicativo.

  3. Na caixa de diálogo Adicionar Novo Projeto, escolha Aplicativos do Windows para o tipo de projeto.

  4. Em Gerenciador de Soluções, clique com o botão direito do mouse no nó Referências para o novo projeto. No menu de atalho, clique em Adicionar Referência para adicionar uma referência ao projeto que contém o controle ou o componente.

  5. Crie uma instância do seu controle ou componente no projeto de teste. Se o componente estiver na Toolbox, você poderá arrastá-lo para a superfície do designer ou criar a instância programaticamente, conforme mostrado no exemplo de código a seguir.

    Dim Component1 As New MyNeatComponent()
    
    MyNeatComponent Component1 = new MyNeatComponent();
    

    Agora você pode depurar seu componente ou controle como de costume.

Para obter mais informações sobre depuração, consulte Depuração no Visual Studio e Passo a passo: depurando personalizar controles personalizados do Windows Forms no tempo de design.

O evento é gerado duas vezes no componente ou no controle herdado

Isso provavelmente é devido a uma cláusula Handles duplicada. Para obter mais informações, consulte Solução de problemas de manipuladores de eventos herdados no Visual Basic.

Erro de tempo de design: "Falha em criar o componente 'Nome do Componente'"

Seu componente ou controle deve fornecer um construtor sem parâmetros sem parâmetros. Quando o ambiente de design cria uma instância do seu componente ou controle, ele não tenta fornecer nenhum parâmetro para as sobrecargas do construtor que aceitam parâmetros.

STAThreadAttribute

O STAThreadAttribute informa ao CLR (Common Language Runtime) que o Windows Forms usa o modelo de apartamento de thread único. Você poderá perceber um comportamento não intencional se não aplicar esse atributo ao método Main do aplicativo do Windows Forms. Por exemplo, imagens de plano de fundo podem não aparecer para controles como ListView. Alguns controles também podem exigir esse atributo para um comportamento correto de Preenchimento Automático e do tipo "arrastar e soltar".

O ícone do componente não aparece na caixa de ferramentas

Quando você usa ToolboxBitmapAttribute para associar um ícone ao seu componente personalizado, o bitmap não aparece na caixa de ferramentas para componentes gerados automaticamente. Para ver o bitmap, recarregue o controle usando a caixa de diálogo Escolher Itens da Caixa de Ferramentas. Para obter mais informações, consulte Como fornecer um bitmap da caixa de ferramentas para um controle.

Confira também