Compartilhar via


Instruções passo a passo: depurar controles personalizados do Windows Forms no tempo de design

Quando criar um controle personalizado, frequentemente você achará necessário depurar seu comportamento em tempo de design. Isso será especialmente válido se você estiver criando um designer personalizado para seu controle personalizado. Para obter detalhes, consulte Instruções passo a passo: criando um controle dos Windows Forms que aproveite os recursos de tempo de design do Visual Studio.

Você pode depurar seus controles personalizados usando o Visual Studio, da mesma forma que depuraria qualquer outra classe do .NET Framework. A diferença é que você depurará uma instância separada do Visual Studio que está executando o código do controle personalizado.

Importante

Este artigo destina-se principalmente ao clássico In-Process Designer para Windows Forms com .NET Framework. Os procedimentos podem não ser diretamente aplicáveis ou totalmente compatíveis com projetos destinados ao .NET (não ao .NET Framework).

Para projetos do .NET Framework, somente projetos que podem compilar com as configurações de destino da plataforma Any ou x64 são totalmente suportados no Designer. Projetos que usam ActiveX, COM ou outros componentes de 32 bits podem ter problemas de compatibilidade. O Out-Of_Process Framework Designer, atualmente em visualização, aborda muitos desses problemas de compatibilidade. No entanto, a funcionalidade de tempo de design pode não funcionar tão bem quanto o Designer em processo de 64 bits. Para habilitar o Designer de Framework Fora de Processo, navegue até os Recursos de Visualização do Ambiente>de Opções>de Ferramentas.>

Para obter mais informações sobre o Designer fora de processo, consulte As alterações do designer desde o .NET Framework.

Criar o projeto

A primeira etapa é criar o projeto do aplicativo. Você usará este projeto para criar o aplicativo que hospeda o controle personalizado.

No Visual Studio, crie um projeto de aplicativo do Windows e nomeie-o DebuggingExample.

Criar o projeto de biblioteca de controle

  1. Adicione um projeto de Biblioteca de controle do Windows à solução.

  2. Adicione um novo item UserControl ao projeto DebugControlLibrary. Nomeie-o DebugControl.

  3. No Gerenciador de Soluções, exclua o controle padrão do projeto excluindo o arquivo de código com um nome base de UserControl1.

  4. Compile a solução.

Ponto de verificação

Neste ponto, você poderá ver o controle personalizado na Caixa de Ferramentas.

Para verificar seu progresso, localize a nova guia chamada DebugControlLibrary Components e clique para selecioná-la. Quando ela abrir, você verá seu controle listado como DebugControl com o ícone padrão ao lado dele.

Adicionar uma propriedade ao seu controle personalizado

Para demonstrar que o código de seu controle personalizado está sendo executado em tempo de design, você adicionará uma propriedade e definirá um ponto de interrupção no código que implementa a propriedade.

  1. Abra DebugControl no Editor de Códigos. Adicione o seguinte código à definição da classe:

    Private demoStringValue As String = Nothing
    <BrowsableAttribute(true)>
    Public Property DemoString() As String
    
        Get
            Return Me.demoStringValue
        End Get
    
        Set(ByVal value As String)
            Me.demoStringValue = value
        End Set
    
    End Property
    
    private string demoStringValue = null;
    [Browsable(true)]
    public string DemoString
    {
        get
        {
            return this.demoStringValue;
        }
        set
        {
            demoStringValue = value;
        }
    }
    
  2. Compile a solução.

Adicionar seu controle personalizado ao formulário do host

Para depurar o comportamento em tempo de design do controle personalizado, você colocará uma instância da classe do controle personalizado em um formulário do host.

  1. No projeto "DebuggingExample", abra Form1 no Designer de Formulários do Windows.

  2. Na caixa de Ferramentas, abra a guia Componentes de DebugControlLibrary e arraste uma instância de DebugControl para o formulário.

  3. Encontre a propriedade personalizada DemoString na janela Propriedades. Observe que você pode alterar seu valor, da mesma forma que faria com qualquer outra propriedade. Observe também que, quando a propriedade DemoString for selecionada, a cadeia de caracteres de descrição da propriedade aparecerá na parte inferior da janela Propriedades.

Configurar o projeto para depuração em tempo de design

Para depurar o comportamento em tempo de design do seu controle personalizado, você depurará uma instância separada do Visual Studio que está executando o código do seu controle personalizado.

  1. Clique com o botão direito do mouse no projeto DebugControlLibrary no Gerenciador de Soluções e selecione Propriedades.

  2. Na folha de propriedades DebugControlLibrary, selecione a guia Depurar.

    Na seção Iniciar Ação, selecione Iniciar programa externo. Você estará depurando uma instância separada do Visual Studio, portanto, clique no botão de reticências (The Ellipsis button (...) in the Properties window of Visual Studio) para procurar o IDE do Visual Studio. O nome do arquivo executável é devenv.exe e se você instalou no local padrão, seu caminho é %ProgramFiles(x86)%\Microsoft Visual Studio\2019\edition>\Common7\<IDE.

  3. Selecione OK para fechar a caixa de diálogo.

  4. Clique com botão direito do mouse no projeto DebugControlLibrary e selecione Definir como Projeto de Inicialização para habilitar essa configuração de depuração.

Depurar seu controle personalizado em tempo de design

Agora, você está pronto para depurar o controle personalizado enquanto ele é executado em modo de design. Quando você iniciar a sessão de depuração, uma nova instância do Visual Studio será criada e você a usará para carregar a solução "DebuggingExample". Quando você abrir Form1 no Designer de Formulários, uma instância do controle personalizado será criada e começará a ser executada.

  1. Abra o arquivo de origem DebugControl no Editor de Códigos e coloque um ponto de interrupção no acessador Set da propriedade DemoString.

  2. Pressione F5 para iniciar a sessão de depuração. Uma nova instância do Visual Studio é criada. É possível diferenciar as instâncias de duas maneiras:

    • A instância de depuração tem as palavras Em execução na barra de título

    • A instância de depuração tem o botão Iniciar em sua barra de ferramentas Depurar desabilitado

    Seu ponto de interrupção é definido na instância de depuração.

  3. Na nova instância do Visual Studio, abra a solução "DebuggingExample". Você pode localizar facilmente a solução selecionando Projetos Recentes no menu Arquivo. O arquivo de solução "DebuggingExample.sln" será listado como o arquivo usado mais recentemente.

    Importante

    Se você estiver depurando um projeto do Windows Forms .NET 6 ou posterior, não carregue o projeto, em vez disso, use esta instância do Visual Studio para anexar um depurador ao processo DesignToolsServer.exe Selecione o item de menu Depurar>anexar ao processo. Encontre DesignToolsServer.exe na lista de processos e pressione Anexar. Para obter mais informações, consulte As alterações do designer desde o .NET Framework.

  4. Abra Form1 no Designer de Formulários e selecione o controle DebugControl.

  5. Altere o valor da propriedade DemoString. Quando você confirma a alteração, a instância de depuração do Visual Studio adquire foco e a execução pára em seu ponto de interrupção. É possível percorrer passo a passo o acessador de propriedade, da mesma forma que você o faria com qualquer outro código.

  6. Para parar a depuração, saia da instância hospedada do Visual Studio ou selecione o botão Parar depuração na instância de depuração.

Próximas etapas

Agora que você pode depurar seus controles personalizados em tempo de design, há muitas possibilidades para expandir a interação do controle com o IDE do Visual Studio.

Confira também