Compartilhar via


Solucionar problemas de controle e criação de componentes

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

  • Não é possível adicionar 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 controle à caixa de ferramentas

Se você quiser adicionar um controle personalizado criado em outro projeto ou um controle de terceiros aoToolbox, faça isso manualmente. Se o projeto atual contiver seu controle ou componente, ele deverá aparecer na caixa de ferramentas automaticamente. Para obter mais informações, consulte Passo a passo: preencher automaticamente 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 controle ActiveX, clique na guia componentes COM.

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

    O controle é adicionado à caixa de ferramentas .

  4. Se o 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 que contém seu controle.

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

      Seu controle aparece na caixa de diálogo.

    4. Confirme se o controle está selecionado e 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 o controle derivar da classe UserControl, você poderá depurar seu comportamento em 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 componente, você deve adicioná-lo 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 Adicionare Novo Projeto para adicionar um projeto de teste ao seu aplicativo.

  3. Na caixa de diálogo Adicionar Novo Projeto, escolha Aplicativo 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 caixa de ferramentas , 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 ocorre 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 Design-Time: "Falha ao criar o componente 'Nome do componente'"

Seu componente ou controle precisa fornecer um construtor 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 Single-Threaded Apartment. Você poderá notar um comportamento não intencional se não aplicar esse atributo ao método Main do aplicativo Windows Forms. Por exemplo, as imagens de plano de fundo podem não aparecer para controles como ListView. Alguns controles também podem exigir esse atributo para o comportamento correto de preenchimento automático e de arrastar e soltar.

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

Quando você usa ToolboxBitmapAttribute para associar um ícone ao 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.

Consulte também