Tutorial: Depuración de controles personalizados de Windows Forms en tiempo de diseño

Al crear un control personalizado, a menudo es necesario depurar su comportamiento en tiempo de diseño. Esto es así especialmente si va a crear un diseñador personalizado para el control personalizado. Para obtener información detallada, vea Tutorial: Crear un control de Windows Forms que aproveche las características en tiempo de diseño de Visual Studio.

Puede depurar los controles personalizados con Visual Studio, del mismo modo que depuraría cualquier otra clase de .NET Framework. La diferencia es que 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 en proceso 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).

Para los proyectos .NET Framework, solo son totalmente compatibles en el Diseñador los proyectos que pueden compilar con la configuración de destino de plataforma Cualquiera o x64. Los proyectos que usan ActiveX, COM u otros componentes de 32 bits pueden tener problemas de compatibilidad. El Diseñador de marcos fuera de proceso, actualmente en versión preliminar, aborda muchas de esas incidencias de compatibilidad. Sin embargo, es posible que la funcionalidad en tiempo de diseño no funcione tan bien como la del Diseñador en proceso de 64 bits. Para habilitar el Diseñador de marcos fuera de proceso, vaya a la sección Herramientas>Opciones>Entorno>Características en vista previa.

Para más información sobre el Diseñador fuera de proceso, vea Cambios del diseñador desde .NET Framework.

Crear el proyecto

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

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

Creación del proyecto de biblioteca de controles

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

  2. Agregue un nuevo elemento UserControl al proyecto. Asígnele el nombre DebugControl.

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

  4. Compile la solución.

Punto de control

Llegado este punto, verá su control personalizado en el cuadro de herramientas.

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

Adición de una propiedad al control personalizado

Para demostrar que el código del control personalizado se está ejecutando 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 siguiente código a la definición de la 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.

Adición del control personalizado al formulario host

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 DepurarControlLibrary y arrastre una instancia de DebugControl al formulario.

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

Configuración del proyecto para la depuración en tiempo de diseño

Para depurar el comportamiento en tiempo de diseño del control personalizado, depurará una instancia independiente de Visual Studio que ejecuta el código del 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 de DebugControlLibrary, seleccione la pestaña Depurar.

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

  3. Seleccione 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.

Depuración del control personalizado en tiempo de diseño

Ya está listo para depurar el control personalizado a medida que se ejecuta en el modo de diseño. Al iniciar la sesión de depuración, se creará una nueva instancia de Visual Studio y la usará para cargar la solución "DebuggingExample". Cuando abra Form1 en el Diseñador de formularios, se creará una instancia del control personalizado y empezará 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 descriptor de acceso Set de la propiedad DemoString.

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

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

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

    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". Si quiere encontrar la solución de forma fácil, 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 está depurando un proyecto .NET 6 o posterior de Windows Forms, 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ú Depurar>Asociar al proceso. Busque DesignToolsServer.exe en la lista de procesos y presione Asociar. Para más información, vea Cambios del diseñador desde .NET Framework.

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

  5. Cambie el valor de la propiedad DemoString . 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 paso a paso el descriptor de acceso de la propiedad del mismo modo que 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 de la instancia de depuración.

Pasos siguientes

Ahora que sabe depurar sus controles personalizados en tiempo de diseño, dispone de un sinfín de posibilidades para ampliar la interacción de los controles con el IDE de Visual Studio.

Vea también