Compartilhar via


Solução de problemas de controle e autoria de componentes

Este tópico lista os seguintes problemas comuns que surgem durante o desenvolvimento de componentes e controles. Para obter mais informações, consulte Programando com Componentes.

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

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

  • Evento é disparado duas vezes no componente ou controle herdado

  • Erro de tempo de design: "Falha ao criar o componente 'nome do componente'"

  • STAThreadAttribute

  • Ícone do componente não aparecerá na caixa de ferramentas

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

Se você deseja adicionar um controle personalizado que você criou em outro projeto ou um controle de terceiros para o caixa de ferramentas, deve fazê-lo manualmente. Se o projeto atual contém o controle ou componente, ele deve aparecer na caixa de ferramentas automaticamente. Para obter mais informações, consulte Demonstra Passo a passo: Preenchendo automaticamente a caixa de ferramentas com componentes personalizados.

Para adicionar um controle à caixa de ferramentas

  1. Com o botão direito do caixa de ferramentas e, no menu de atalho, selecione Escolher itens.

  2. No Choose Toolbox Items caixa de diálogo caixa, adicionar o componente:

    • Se você deseja adicionar um.Componente do NET Framework ou o controle, clique na .NET Framework Components guia.

      - ou -

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

  3. Se seu controle estiver listado na caixa de diálogo, confirme selecionada e, em seguida, clique em OK.

    O controle é adicionado para o 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 Browse.

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

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

      O controle aparece na caixa de diálogo.

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

      O controle é adicionado para o caixa de ferramentas.

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

Se o seu controle deriva do UserControl classe, você pode depurar seu comportamento em tempo de execução com o contêiner de teste. Para obter mais informações, consulte Como: Teste o comportamento de tempo de execução de um UserControl.

Outros componentes e controles personalizados não são projetos autônomos. Eles devem ser hospedados por um aplicativo como, por exemplo, um projeto Windows Forms. Para depurar um controle ou componente, você deve adicioná-lo para um projeto Windows Forms.

Para depurar um controle ou componente

  1. Do Build menu, clique em Build Solution para desenvolver sua solução.

  2. Do arquivo menu, escolha Adde, em seguida, Novo projeto para adicionar um projeto de teste ao seu aplicativo.

  3. No Add New Project caixa de diálogo Escolher Windows Application para o tipo de projeto.

  4. Em Solution Explorer, com o botão direito do referências o nó para o novo projeto. No menu de atalho, clique em Adicionar referência de para adicionar uma referência ao projeto que contém o controle ou componente.

  5. Crie uma instância do controle ou componente no projeto de teste. Se o seu componente está na caixa de ferramentas, você pode arrastá-lo para a superfície de design ou você pode criar a instância programaticamente, como mostrado no exemplo de código a seguir.

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

    Você pode depurar seu controle ou componente como de costume.

Para obter mais informações sobre depuração, consulte Depuração no Visual Studio e Demonstra Passo a passo: Controles de formulários do Windows personalizados de depuração em tempo de Design.

Evento é disparado duas vezes no componente ou controle herdado

Provavelmente devido a um duplicado, Handles cláusula. Para obter mais informações, consulte Solução de problemas de manipuladores de eventos herdados no Visual Basic.

Erro de tempo de design: "Falha ao criar o componente nome do componente"

O componente ou controle deve fornecer um construtor padrão sem parâmetros. Quando o ambiente de design cria uma instância do componente ou controle, ele tenta fornecer quaisquer parâmetros para as sobrecargas de construtor que usam parâmetros.

STAThreadAttribute

O STAThreadAttribute informa que o common language runtime (CLR) que o Windows Forms usa o modelo single-threaded apartment. Você pode observar o comportamento indesejado se você não aplicar esse atributo para seu aplicativo de Windows Forms Main método. Por exemplo, imagens de plano de fundo podem não aparecer para controles, como ListView. Alguns controles também podem exigir esse atributo para AutoCompletar correto e o comportamento de arrastar e soltar.

Ícone do componente não aparecerá na caixa de ferramentas

Quando você usa ToolboxBitmapAttribute para associar um ícone com o componente personalizado, o bitmap não aparece na caixa de ferramentas para todos os componentes gerados automaticamente. Para ver o bitmap, recarregar o controle usando o Choose Toolbox Items caixa de diálogo. Para obter mais informações, consulte Como: Fornecer um Bitmap de Toolbox para um controle.

Consulte também

Tarefas

Demonstra Passo a passo: Preenchendo automaticamente a caixa de ferramentas com componentes personalizados

Como: Teste o comportamento de tempo de execução de um UserControl

Demonstra Passo a passo: Controles de formulários do Windows personalizados de depuração em tempo de Design

Desenvolvimento de tempo de Design de solução de problemas

Outros recursos

Desenvolvendo controles Windows Forms em tempo de Design

Criação de Componentes

Programando com Componentes