Crear un control de formularios Windows Forms (C++)

Los controles de formularios Windows Forms son componentes que se pueden agregar a aplicaciones de formularios Windows Forms (aplicaciones con GUI destinadas al Common Language Runtime). Las aplicaciones de Windows Forms en Visual C++ utilizan clases de .NET Framework y otras características .NET con la nueva sintaxis de Visual C++.

En este procedimiento, creará un control de formularios Windows Forms que muestra un número. Este número se incrementa cada vez que un usuario hace clic en la etiqueta de una aplicación. También creará un proyecto de aplicación de Windows Forms para probar el control.

En este tutorial se trata lo siguiente:

  • Crear un proyecto.

  • Diseñar el control.

  • Agregar una propiedad personalizada al control.

  • Agregar un proyecto para probar el control.

  • Colocar el control en una aplicación.

  • Ejecutar la aplicación.

Requisitos previos

En este tema, se da por supuesto que conoce los fundamentos del lenguaje C++.

vínculo a vídeo Para obtener una versión en vídeo de este tema, vea Video How to: Creating a Windows Forms Control (C++).

Crear un nuevo proyecto

La plantilla de un proyecto de control de formularios Windows Forms que se utiliza en esta sección crea un control de usuario, el cual es un control compuesto que contiene otros controles.

Como alternativa, puede crear un control de formularios Windows Forms derivando una clase directamente de la clase Control (en la que el código es responsable de dibujar el control) o de la clase Component (un control sin interfaz de usuario).

Para crear un nuevo proyecto de control de formularios Windows Forms

  1. En el menú Archivo, seleccione Nuevo y, a continuación, haga clic en Proyecto....

  2. En el panel Tipos de proyecto, seleccione CLR en el nodo Visual C++ y, a continuación, seleccione Biblioteca de controles de formularios Windows Forms en el panel Plantillas instaladas de Visual Studio.

    Escriba un nombre para el proyecto, como clickcounter.

    Escriba un nombre diferente para la solución, como controlandtestapp.

    Puede aceptar la ubicación predeterminada, especificar la ubicación que desee o desplazarse hasta un directorio donde desee guardar el proyecto.

  3. Se abre el Diseñador de Windows Forms y aparece un área en la que puede agregar los controles que desee colocar en la superficie de diseño de controles.

Diseñar el control

En este paso, agrega un control Label a la superficie de diseño de control. Establece, a continuación, algunas propiedades en el propio control y en el control Label que contiene.

Para establecer las propiedades de un control de usuario

  1. Si la ventana Propiedades no está visible, en el menú Ver haga clic en Ventana Propiedades.

    En el Diseñador de Windows Forms, haga clic en el control para seleccionarlo y establecer sus propiedades como sigue:

    • Establezca la propiedad Size en 100, 100.

    • Establezca BorderStyle en Fixed3D

      Los límites de la etiqueta se podrán ver después de colocar el control en una aplicación.

  2. Si la ventana Cuadro de herramientas no está visible, seleccione Cuadro de herramientas en el menú Ver.

    Arrastre un control Label desde el Cuadro de herramientas hasta la superficie de diseño y colóquelo hacia la mitad del control.

    Establezca estas propiedades para la etiqueta:

    • Establezca BorderStyle en FixedSingle

    • Establezca Text en el dígito 0 (cero).

    • Establezca Autosize a False.

    • Establezca Size en 30, 20.

    • Establezca TextAlign en MiddleCenter.

    Deje la propiedad Name (como haga referencia a ella en el código) sin modificar como label1. El control debería tener un aspecto similar al siguiente:

    El diseño del control

  3. Agregue un controlador de eventos para el evento Click de la etiqueta (el evento predeterminado para una etiqueta) haciendo doble clic en la etiqueta.

  4. El archivo clickcounter.h se muestra en el área de edición con un método de control de eventos vacío.

    Nota

    Si necesita más espacio, cierre la ventana Cuadro de herramientas o la ventana Propiedades haciendo clic en los cuadros de cierre o desanclando las ventanas para que se oculten automáticamente.

  5. Desplace el cursor hasta después de la llave de apertura del método label1_Click, presione la tecla Entrar, y escriba:

    int temp = System::Int32::Parse(label1->Text);
    temp++;
    label1->Text = temp.ToString();
    

    IntelliSense muestra una lista de opciones válidas después de escribir un operador de resolución de ámbito (::), operador de punto (.) u operador de flecha (- >). Puede resaltar un elemento y presionar Tabulador o Entrar, o hacer doble clic en un elemento para insertarlo en el código.

    Asimismo, cuando escribe un paréntesis de apertura para un método, Visual Studio muestra tipos de argumentos válidos para cada sobrecarga del método.

Agregar una propiedad personalizada al control

En este paso, definirá una propiedad personalizada que determina si el número mostrado en el control se incrementa cuando el usuario hace clic en la etiqueta o en cualquier ubicación del control.

Para agregar una propiedad personalizada a un control

  1. Coloque el cursor después de los dos puntos del primer indicador de ámbito public, public:, en la parte superior del archivo clickcounterControl.h presione Entrar y, a continuación, escriba lo siguiente:

    property bool ClickAnywhere {
        bool get() {
            return (label1->Dock == DockStyle::Fill);
        }
        void set(bool val) {
            if (val) 
                label1->Dock = DockStyle::Fill;
            else 
                label1->Dock = DockStyle::None;
        }
    }
    

    Cuando se establece la propiedad ClickAnywhere del control en true, la propiedad Dock de la etiqueta toma el valor DockStyle::Fill, y la etiqueta rellena toda la superficie del control. Un clic en cualquier parte de la superficie de control producirá un evento Click de la etiqueta, el cual incrementa el número en la etiqueta.

    Cuando la propiedad ClickAnywhere es false (el valor predeterminado), la propiedad Dock de la etiqueta se establece en DockStyle::None. La etiqueta no llena el control, y el clic en el control debe realizarse dentro de los límites de la etiqueta para que produzca un evento Click de la etiqueta, el cual incrementa el número.

  2. Crear el control de usuario. En el menú Compilar, seleccione Compilar solución.

    Si no hay ningún error, un control de formularios Windows Forms se genera con un nombre de archivo de clickcounter.dll. Puede buscar este archivo en la estructura de directorios del proyecto.

Agregar un proyecto para probar el control

En este paso, creará un proyecto de aplicación de Windows Forms en el que colocará instancias del control clickcounter en un formulario.

Nota

La aplicación de Windows Forms que crea para probar el control la puede escribir con Visual C++ o con otro lenguaje .NET, como C# o Visual Basic.

Para crear un proyecto de aplicación de Windows Forms

  • En el menú Archivo, seleccione Nuevo y, a continuación, haga clic en Proyecto….

También puede agregar un proyecto a la solución; para ello, haga clic con el botón secundario del mouse en la solución controlandtestapp en el Explorador de soluciones, seleccione Agregar y, a continuación, haga clic en Nuevo proyecto….

  1. En el panel Tipos de proyecto, seleccione CLR en el nodo Visual C++ y, a continuación, seleccione Aplicación de Windows Forms en el panel Plantillas instaladas de Visual Studio.

    Escriba un nombre para el proyecto, como testapp.

    Asegúrese de seleccionar Agregar a solución en lugar de aceptar la opción predeterminada Crear nueva solución en la lista desplegable Solución y, a continuación, haga clic en Aceptar.

  2. El Diseñador de Windows Forms para el nuevo proyecto se abre y muestra un nuevo formulario denominado Form1, como en esta figura:

    Formulario creado recientemente

Para agregar un control al Cuadro de herramientas

  1. Agregar una referencia al control. Haga clic con el botón secundario en el proyecto testapp en el Explorador de soluciones y haga clic en Referencias.

    Haga clic en el botón Agregar nueva referencia, haga clic en la pestaña Proyectos (está agregando una referencia a otro proyecto de esta solución) y, a continuación, seleccione el proyecto clickcounter. Haga clic dos veces en Aceptar.

  2. Si no puede ver la ventana Cuadro de herramientas, seleccione Cuadro de herramientas en el menú Ver.

  3. Si no puede encontrar el control clickCounter en el Cuadro de herramientas con un icono de "engranaje", haga clic con el botón secundario en el Cuadro de herramientas y haga clic en Elegir elementos.

    Haga clic en el botón Examinar y busque el archivo clickcounter.dll en la estructura de directorios de soluciones. Selecciónelo y haga clic en Abrir.

    El control clickcounter aparece en la lista Componentes de .NET Framework con una marca de verificación. Haga clic en Aceptar.

    El control aparece en el Cuadro de herramientas con el icono de "engranaje" predeterminado.

Colocar el control en una aplicación

En este paso, colocará dos instancias del control en un formulario de aplicación y establecerá sus propiedades.

Para colocar instancias de un control en un formulario

  1. Arrastre dos instancias del control clickcounter desde el Cuadro de herramientas. Colóquelas en el formulario de modo que no se superpongan.

    Si desea ensanchar el formulario, haga clic en él para seleccionarlo y arrastre hacia fuera uno de los controladores de selección.

  2. Si no puede ver la ventana Propiedades, seleccione Propiedades en el menú Ver.

    La propiedad ClickAnywhere está en la sección Varios de la Ventana Propiedades (si las propiedades están organizadas por categorías).

  3. Haga clic en una instancia del control clickcounter del formulario para seleccionarla y, a continuación, establezca su propiedad ClickAnywhere en true.

  4. Deje la propiedad ClickAnywhere de la otra instancia del control clickcounter establecida en false (el valor predeterminado).

  5. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto testapp y seleccione Establecer como proyecto de inicio.

  6. En el menú Compilar, seleccione Recompilar solución.

    Debería ver que los dos proyectos se compilan sin errores.

Ejecutar la aplicación

En este paso, ejecutará la aplicación y hará clic en los controles para probarlos.

Para probar la aplicación

  1. En el menú Depurar, elija Iniciar depuración.

    El formulario aparece con las dos instancias del control visible.

  2. Ejecute la aplicación y haga clic en ambos controles clickcounter:

    • Haga clic en el control con ClickAnywhere establecido en true.

      El número de la etiquetase incrementa cuando hace clic en cualquier parte del control.

    • Haga clic en el control con ClickAnywhere establecido en false.

      El número de la etiqueta sólo se incrementa al hacer clic dentro del límite visible de la etiqueta. La captura de pantalla siguiente muestra cómo podría aparecer la aplicación después de hacer clic varias veces:

Aplicación de prueba que muestra los controles

  1. Cierre la aplicación de prueba haciendo clic en su cuadro de cierre en la esquina superior derecha de la ventana Form1.

Pasos siguientes

Anterior: Crear una aplicación de formularios Windows Forms mediante .NET Framework (C++) | Siguiente: Recursos para crear un juego usando DirectX (C++)

Vea también

Tareas

Paseo guiado por Visual C++

Referencia

Windows API

System.Windows.Forms

Conceptos

Utilizar el IDE de Visual Studio IDE para desarrollo de C++

Otros recursos

Desarrollar aplicaciones cliente

Controles de Windows Forms