Compartir a través de


Guía paso a paso: Depuración de controles personalizados de Formularios Windows Forms en el tiempo de diseño

Al crear un control personalizado, a menudo es necesario depurar su comportamiento en tiempo de diseño. Esto es especialmente cierto si está creando un diseñador personalizado para su control personalizado. Para obtener más información, consulte Tutorial: Crear un control de Formularios Windows Forms que aproveche las características de Visual Studio Design-Time.

Puede depurar los controles personalizados mediante Visual Studio, igual que depuraría cualquier otra clase de .NET Framework. La diferencia es que vas a depurar una instancia independiente de Visual Studio que ejecuta el código del control personalizado.

Importante

Este artículo está pensado principalmente para el diseñador de In-Process clásico para Windows Forms con .NET Framework. Es posible que los procedimientos no sean directamente aplicables o totalmente compatibles con proyectos que tienen como destino .NET (no .NET Framework).

En el caso de los proyectos de .NET Framework, solo los proyectos que se pueden compilar con la configuración de destino de la plataforma Cualquiera o x64 son totalmente compatibles con el Diseñador. Los proyectos que usan ActiveX, COM u otros componentes de 32 bits pueden tener problemas de compatibilidad. El diseñador de Out-Of_Process Framework, actualmente en versión preliminar, soluciona muchos de esos problemas de compatibilidad. Sin embargo, es posible que la funcionalidad en tiempo de diseño no funcione tan bien como el Diseñador de In-Process de 64 bits. Para habilitar el Out-Of-Process Framework Designer, vaya a Herramientas>>Características de versión preliminar.

Para obtener más información sobre out-Of-Process Designer, consulte Cambios del diseñador desde .NET Framework.

Creación del proyecto

El primer paso es crear el proyecto de aplicación. Usará este proyecto para compilar la aplicación que hospeda el control personalizado.

En Visual Studio, cree un proyecto de aplicación de Windows y asígneles el nombre DebuggingExample.

Creación del proyecto de biblioteca de controles

  1. Agregue un proyecto de biblioteca de controles de Windows a la solución.

  2. Agregue un nuevo elemento UserControl al proyecto DebugControlLibrary. Asígne un nombre DebugControl.

  3. En el Explorador de soluciones, elimine el control predeterminado del proyecto eliminando el archivo de código con un nombre base de UserControl1.

  4. Compile la solución.

Punto de control

En este momento, podrá ver el control personalizado en el Cuadro de herramientas.

Para comprobar el progreso, busque la nueva pestaña denominada Componentes de la Biblioteca de Control de Depuración y haga clic para seleccionarla. Cuando se abra, verá que el control aparece como DebugControl con el icono predeterminado junto a él.

Añade una propiedad a tu control personalizado

Para demostrar que el código de su control personalizado se ejecuta en tiempo de diseño, agregará una propiedad y establecerá un punto de interrupción en el código que implementa la propiedad.

  1. Abra DebugControl en el Editor de código. Agregue el código siguiente a la definición de clase:

    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 la solución.

Añade tu control personalizado al formulario anfitrión

Para depurar el comportamiento en tiempo de diseño del control personalizado, colocará una instancia de la clase de control personalizado en un formulario host.

  1. En el proyecto "DebuggingExample", abra Form1 en el Diseñador de Windows Forms.

  2. En el Cuadro de herramientas, abra la pestaña Componentes de la Biblioteca de Control de Depuración y arrastre una instancia de DebugControl al formulario.

  3. Busque la DemoString propiedad personalizada en la ventana Propiedades . Tenga en cuenta que puede cambiar su valor como lo haría con cualquier otra propiedad. Tenga en cuenta también que, cuando se selecciona la DemoString propiedad, la cadena de descripción de la propiedad aparece en la parte inferior de la ventana Propiedades .

Configurar el proyecto para depuración en tiempo de diseño

Para depurar el comportamiento en tiempo de diseño de su control personalizado, deberá depurar una instancia independiente de Visual Studio que esté ejecutando el código de su control personalizado.

  1. Haga clic con el botón derecho en el proyecto DebugControlLibrary en el Explorador de Soluciones y seleccione Propiedades.

  2. En la hoja de propiedades DebugControlLibrary, seleccione la pestaña Debug.

    En la sección Iniciar acción , seleccione Iniciar programa externo. Va a depurar una instancia independiente de Visual Studio, por lo que debe hacer clic en los puntos suspensivos (el botón de puntos suspensivos (...) en la ventana de propiedades de Visual Studio) para buscar el IDE de Visual Studio. El nombre del archivo ejecutable es devenv.exey, si ha instalado en la ubicación predeterminada, su ruta de acceso es %ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDE.

  3. Haga clic en Aceptar para cerrar el cuadro de diálogo.

  4. Haga clic con el botón derecho en el proyecto DebugControlLibrary y seleccione Establecer como proyecto de inicio para habilitar esta configuración de depuración.

Depura tu control personalizado en tiempo de diseño

Ahora estás preparado para depurar tu control personalizado mientras se ejecuta en modo de diseño. Al iniciar la sesión de depuración, se creará una nueva instancia de Visual Studio y se usará para cargar la solución "DebuggingExample". Al abrir Form1 en el Diseñador de formularios, se creará una instancia del control personalizado y comenzará a ejecutarse.

  1. Abra el archivo de código fuente DebugControl en el Editor de código y coloque un punto de interrupción en el Set descriptor de acceso de la DemoString propiedad .

  2. Presione F5 para iniciar la sesión de depuración. Se crea una nueva instancia de Visual Studio. Puede distinguir entre las instancias de dos maneras:

    • La instancia de depuración tiene la palabra Running en su barra de título.

    • La instancia de depuración tiene el botón Iniciar en la barra de herramientas Depurar deshabilitada

    El punto de interrupción se establece en la instancia de depuración.

  3. En la nueva instancia de Visual Studio, abra la solución "DebuggingExample". Para encontrar fácilmente la solución, seleccione Proyectos recientes en el menú Archivo . El archivo de solución "DebuggingExample.sln" se mostrará como el archivo usado más recientemente.

    Importante

    Si va a depurar un proyecto de Windows Forms de .NET 6 o posterior, no cargue el proyecto. En su lugar, use esta instancia de Visual Studio para adjuntar un depurador al proceso DesignToolsServer.exe. Seleccione el elemento de menú depuración>Adjuntar a proceso. Busque DesignToolsServer.exe en la lista de procesos y presione Adjuntar. Para obtener más información, vea Cambios en el diseñador desde .NET Framework.

  4. Abra Form1 en el Diseñador de formularios y seleccione el control DepurarControl .

  5. Cambie el valor de la DemoString propiedad . Al confirmar el cambio, la instancia de depuración de Visual Studio adquiere el foco y la ejecución se detiene en el punto de interrupción. Puede recorrer el descriptor de acceso de propiedad de un solo paso como lo haría con cualquier otro código.

  6. Para detener la depuración, salga de la instancia hospedada de Visual Studio o seleccione el botón Detener depuración en la instancia de depuración.

Pasos siguientes

Ahora que puede depurar sus controles personalizados en tiempo de diseño, existen numerosas posibilidades para ampliar la interacción de su control con el IDE de Visual Studio.

Consulte también