Partilhar via


Guia: Depurar controles personalizados do Windows Forms em tempo de concepção

Ao criar um controle personalizado, muitas vezes será necessário depurar o seu comportamento durante a fase de design. Isso é especialmente verdadeiro se você estiver criando um designer personalizado para seu controle personalizado. Para obter detalhes, consulte Passo a passo: Criando um controle do Windows Forms que aproveita os recursos do Visual Studio Design-Time.

Você pode depurar seus controles personalizados usando o Visual Studio, assim como você 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 os projetos que podem compilar com as configurações de destino da plataforma qualquer 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 versão preliminar, aborda muitos desses problemas de compatibilidade. No entanto, a funcionalidade durante o desenvolvimento pode não funcionar tão bem quanto o Designer In-Process de 64 bits. Para ativar o Out-Of-Process Framework Designer, vá para o Ferramentas>Opções>Ambiente>Pré-visualização de funcionalidades.

Para obter mais informações sobre o Out-Of-Process Designer, consulte As alterações no designer desde .NET Framework.

Criar o projeto

O primeiro passo é criar o projeto de aplicação. Você usará esse 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 Biblioteca de Controle do Windows à solução.

  2. Adicione um novo UserControl item 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. Crie a solução.

Ponto de controlo

Neste ponto, você poderá ver seu controle personalizado no Toolbox.

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

Adicionar uma propriedade ao seu controle personalizado

Para demonstrar que o código do 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 Code Editor. Adicione o seguinte código à definição de 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. Crie a solução.

Adicionar seu controle personalizado ao formulário de host

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

  1. No projeto "DebuggingExample", abra o Form1 no Windows Forms Designer.

  2. No Toolbox, abra o separador DebugControlLibrary Components e arraste uma instância de DebugControl para o formulário.

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

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

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

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

  2. Na folha de propriedades DebugControlLibrary, selecione o separador Depurar.

    Na seção Iniciar Ação, selecione Iniciar programa externo. Você estará a depurar uma instância separada do Visual Studio, portanto, clique no botão Ellipsis (reticências) (O botão Ellipsis (...) na janela Propriedades do Visual Studio) para localizar o IDE do Visual Studio. O nome do arquivo executável é devenv.exee, se você instalou no local padrão, seu caminho será %ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDE.

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

  4. Clique com o botão direito do rato no projeto DebugControlLibrary e selecione a opção Definir como Projeto de Inicialização para ativar esta configuração de depuração.

Depurar o seu controle personalizado em tempo de conceção

Agora você está pronto para depurar seu controle personalizado enquanto ele é executado no modo de design. Quando você inicia 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ê abre o Form1 noForms Designer , uma instância do seu controle personalizado será criada e começará a ser executada.

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

  2. Pressione F5 para iniciar a sessão de depuração. Uma nova instância do Visual Studio é criada. Você pode distinguir entre as instâncias de duas maneiras:

    • A instância de depuração tem a palavra Running em sua barra de título

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

    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 encontrar facilmente a solução ao selecionar Projetos Recentes no menu Arquivo. O arquivo de solução "DebuggingExample.sln" será listado como o arquivo usado mais recentemente.

    Importante

    Se estiveres a depurar um projeto .NET 6 ou posterior do Windows Forms, não carregues o projeto, ao invés disso, usa esta instância do Visual Studio para ligar um depurador ao processo de 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 o Form1 no Forms Designer e selecione o controlo 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 para em seu ponto de interrupção. Você pode executar passo a passo pelo acessador da propriedade, assim como faria com qualquer outro trecho de código.

  6. Para interromper 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óximos passos

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.

Ver também