Cómo: Heredar de controles de formularios Windows Forms existentes

Si desea ampliar la funcionalidad de un control existente, puede crear un control derivado a partir de un control existente a través de la herencia. Al heredar a partir de un control existente, hereda toda la funcionalidad y las propiedades visuales del control. Por ejemplo, si estuviera creando un control heredado a partir de Button, el nuevo control tendría el aspecto de un control Button estándar y actuaría como tal. A continuación, podría extender o modificar la funcionalidad del nuevo control mediante la implementación de métodos y propiedades personalizados. En algunos controles, también puede cambiar la apariencia visual del control heredado invalidando su método OnPaint.

Para crear un control heredado

  1. Cree un proyecto de Aplicación de Windows Forms en Visual Studio.

  2. En el menú Proyecto , elija Agregar nuevo elemento.

    Aparecerá el cuadro de diálogo Agregar nuevo elemento .

  3. En el cuadro de diálogo Agregar nuevo elemento, haga doble clic en Control personalizado.

    Se agrega un nuevo control personalizado al proyecto.

  4. Si usa:

    • Visual Basic, haga clic en Mostrar todos los archivos en la parte superior del Explorador de soluciones. Expanda CustomControl1.vb y, a continuación, abra CustomControl1.Designer.vb en el Editor de código.
    • C#, abra CustomControl1.vb en el Editor de código.
  5. Busque la declaración de clase que herede de Control.

  6. Cambie la clase base para el control a partir del que desee heredar.

    Por ejemplo, si desea heredar de Button, cambie la declaración de clase a lo siguiente:

    Partial Class CustomControl1
        Inherits System.Windows.Forms.Button
    
    public partial class CustomControl1 : System.Windows.Forms.Button
    
  7. Si está utilizando Visual Basic, guarde y cierre CustomControl1.Designer.vb. Abra CustomControl1.vb en el Editor de código.

  8. Implemente los métodos o propiedades personalizados que vaya a incorporar el control.

  9. Si desea modificar la apariencia gráfica del control, invalide el método OnPaint.

    Nota

    Invalidar OnPaint no le permitirá modificar la apariencia de todos los controles. Estos controles, todos ellos representados por Windows (por ejemplo, TextBox) nunca llaman a su método OnPaint y, por tanto, nunca usarán el código personalizado. Vea la documentación de ayuda del control concreto que quiera modificar para ver si el método OnPaint está disponible. Para obtener una lista de todos los controles de Windows Form, vea el artículo sobre controles que se utilizan en Windows Forms. Si un control no muestra OnPaint como método miembro, no podrá modificar su apariencia invalidando dicho método. Para información sobre el dibujo personalizado, vea Dibujo y representación personalizados de controles.

    Protected Overrides Sub OnPaint(ByVal e As _
       System.Windows.Forms.PaintEventArgs)
       MyBase.OnPaint(e)
       ' Insert code to do custom painting.
       ' If you want to completely change the appearance of your control,
       ' do not call MyBase.OnPaint(e).
    End Sub
    
    protected override void OnPaint(PaintEventArgs pe)
    {
       base.OnPaint(pe);
       // Insert code to do custom painting.
       // If you want to completely change the appearance of your control,
       // do not call base.OnPaint(pe).
    }
    
  10. Guarde y pruebe el control.

Consulte también