Compartir a través de


Tutorial: Heredar un control de formularios de Windows Forms con C#

Con C#, puede crear controles personalizados eficaces a través de la herencia. A través de la herencia, puede crear controles que conserven toda la funcionalidad inherente de los controles estándar de Windows Forms, pero que también incorporen funcionalidad personalizada. En este recorrido, crearás un control heredado simple denominado ValueButton. Este botón heredará la funcionalidad del control estándar de Windows Forms Button y expondrá una propiedad personalizada denominada ButtonValue.

Crear el proyecto

Al crear un nuevo proyecto, especifique su nombre para establecer el espacio de nombres raíz, el nombre del ensamblado y el nombre del proyecto, y para asegurarse de que el componente predeterminado estará en el espacio de nombres correcto.

Para crear la biblioteca de controles ValueButtonLib y el control ValueButton

  1. En Visual Studio, cree un nuevo proyecto de biblioteca de controles de Windows Forms y asígneles el nombre ValueButtonLib.

    El nombre del proyecto, ValueButtonLib, también se asigna al espacio de nombres raíz de forma predeterminada. El espacio de nombres raíz se usa para calificar los nombres de los componentes del ensamblado. Por ejemplo, si dos ensamblados proporcionan componentes denominados ValueButton, puede especificar el ValueButton componente mediante ValueButtonLib.ValueButton. Para más información, consulte Espacios de nombres.

  2. En el Explorador de soluciones, haga clic con el botón derecho en UserControl1.cs y elija Cambiar nombre en el menú contextual. Cambie el nombre de archivo a ValueButton.cs. Haga clic en el botón cuando se le pregunte si desea cambiar el nombre de todas las referencias al elemento de código "UserControl1".

  3. En el Explorador de soluciones, haga clic con el botón derecho en ValueButton.cs y seleccione Ver código.

  4. Busque la línea de instrucción class , public partial class ValueButtony cambie el tipo del que este control hereda de UserControl a Button. Esto permite que el control heredado herede toda la funcionalidad del control Button.

  5. En el Explorador de soluciones, abra el nodo ValueButton.cs para mostrar el archivo de código generado por el diseñador, ValueButton.Designer.cs. Abra este archivo en el Editor de código.

  6. Busque el InitializeComponent método y quite la línea que asigna la AutoScaleMode propiedad . Esta propiedad no existe en el Button control .

  7. En el menú Archivo , elija Guardar todo para guardar el proyecto.

    Nota:

    Un diseñador visual ya no está disponible. Dado que el Button control realiza su propia pintura, no se puede modificar su apariencia en el diseñador. Su representación visual será exactamente la misma que la de la clase que hereda de (es decir, Button) a menos que se modifique en el código. Todavía puede agregar componentes, que no tienen elementos de interfaz de usuario, a la superficie de diseño.

Agregar una propiedad al control heredado

Un posible uso de controles heredados de Windows Forms es la creación de controles que son idénticos en aspecto y comportamiento a los controles estándar de Windows Forms, pero que exponen propiedades personalizadas. En esta sección, agregará una propiedad denominada ButtonValue al control.

Para agregar la propiedad Value

  1. En el Explorador de soluciones, haga clic con el botón derecho en ValueButton.cs y, a continuación, haga clic en Ver código en el menú contextual.

  2. Localice la class instrucción. Inmediatamente después de , {escriba el código siguiente:

    // Creates the private variable that will store the value of your
    // property.
    private int varValue;
    // Declares the property.
    public int ButtonValue
    {
       // Sets the method for retrieving the value of your property.
       get
       {
          return varValue;
       }
       // Sets the method for setting the value of your property.
       set
       {
          varValue = value;
       }
    }
    

    Este código establece los métodos por los que se almacena y recupera la ButtonValue propiedad . La get instrucción establece el valor devuelto al valor almacenado en la variable varValueprivada y la set instrucción establece el valor de la variable privada mediante el uso de la value palabra clave .

  3. En el menú Archivo , elija Guardar todo para guardar el proyecto.

Probar el control

Los controles no son proyectos independientes; deben hospedarse en un contenedor. Para probar el control, debe proporcionar un proyecto de prueba en el cual se pueda ejecutar. También debe asegurarse de que el control esté accesible para el proyecto de prueba mediante la compilación. En esta sección, compilará el control y lo probará en un formulario Windows Forms.

Para construir el control

En el menú Compilar , haga clic en Compilar solución. La compilación debe realizarse correctamente sin errores ni advertencias del compilador.

Para crear un proyecto de prueba

  1. En el menú Archivo , seleccione Agregar y haga clic en Nuevo proyecto para abrir el cuadro de diálogo Agregar nuevo proyecto .

  2. Seleccione el nodo Windows , debajo del nodo Visual C# y haga clic en Aplicación de Windows Forms.

  3. En el cuadro Nombre , escriba Prueba.

  4. En el Explorador de soluciones, haga clic con el botón derecho en el nodo Referencias del proyecto de prueba y seleccione Agregar referencia en el menú contextual para mostrar el cuadro de diálogo Agregar referencia .

  5. Haga clic en la pestaña con la etiqueta Proyectos. El proyecto ValueButtonLib aparecerá en Nombre del proyecto. Haga doble clic en el proyecto para agregar la referencia al proyecto de prueba.

  6. En el Explorador de soluciones, haga clic con el botón derecho en Probar y seleccione Compilar.

Para agregar el control al formulario

  1. En el Explorador de soluciones, haga clic con el botón derecho en Form1.cs y elija Diseñador de vistas en el menú contextual.

  2. En el Cuadro de herramientas, seleccione ValueButtonLib Components (Componentes de ValueButtonLib). Haga doble clic en ValueButton.

    Aparece un ValueButton en el formulario.

  3. Haga clic con el botón derecho en valueButton y seleccione Propiedades en el menú contextual.

  4. En la ventana Propiedades , examine las propiedades de este control. Tenga en cuenta que son idénticos a las propiedades expuestas por un botón estándar, excepto que hay una propiedad adicional, ButtonValue.

  5. Establezca la propiedad ButtonValue en 5.

  6. En la pestaña Todos los formularios Windows Forms del Cuadro de herramientas, haga doble clic en Etiqueta para agregar un Label control al formulario.

  7. Reubicar la etiqueta en el centro del formulario.

  8. Haga doble clic en valueButton1.

    El Editor de código se abre al valueButton1_Click evento.

  9. Inserte la siguiente línea de código.

    label1.Text = valueButton1.ButtonValue.ToString();
    
  10. En el Explorador de soluciones, haga clic con el botón derecho en Probar y elija Establecer como proyecto de inicio en el menú contextual.

  11. En el menú Depurar , seleccione Iniciar depuración.

    Form1 Aparece.

  12. Haga clic en valueButton1.

    El número '5' se muestra en label1, demostrando que la propiedad ButtonValue del control heredado se ha pasado a label1 a través del método valueButton1_Click. Por lo tanto, el ValueButton control hereda toda la funcionalidad del botón estándar de Windows Forms, pero expone una propiedad personalizada adicional.

Consulte también