Cómo: Heredar de controles de formularios Windows Forms existentesHow to: Inherit from Existing Windows Forms Controls

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.If you want to extend the functionality of an existing control, you can create a control derived from an existing control through inheritance. Al heredar a partir de un control existente, hereda toda la funcionalidad y las propiedades visuales del control.When inheriting from an existing control, you inherit all of the functionality and visual properties of that control. Por ejemplo, si estuviera creando un control heredado de Button, el nuevo control tendría un aspecto y actuaría exactamente igual que un control de Button estándar.For example, if you were creating a control that inherited from Button, your new control would look and act exactly like a standard Button control. A continuación, podría extender o modificar la funcionalidad del nuevo control mediante la implementación de métodos y propiedades personalizados.You could then extend or modify the functionality of your new control through the implementation of custom methods and properties. En algunos controles, también puede cambiar la apariencia visual del control heredado invalidando su método OnPaint.In some controls, you can also change the visual appearance of your inherited control by overriding its OnPaint method.

Para crear un control heredadoTo create an inherited control

  1. En Visual Studio, cree un nuevo proyecto de aplicación de Windows Forms .In Visual Studio, create a new Windows Forms Application project.

  2. En el menú Proyecto , elija Agregar nuevo elemento.From the Project menu, choose Add New Item.

    Aparecerá el cuadro de diálogo Agregar nuevo elemento.The Add New Item dialog box appears.

  3. En el cuadro de diálogo Agregar nuevo elemento, haga doble clic en Control personalizado.In the Add New Item dialog box, double-click Custom Control.

    Se agrega un nuevo control personalizado al proyecto.A new custom control is added to your project.

  4. Si usa:If you using:

    • Visual Basic, en la parte superior de Explorador de soluciones, haga clic en Mostrar todos los archivos.Visual Basic, at the top of Solution Explorer, click Show All Files. Expanda CustomControl1.vb y, a continuación, abra CustomControl1.Designer.vb en el Editor de código.Expand CustomControl1.vb and then open CustomControl1.Designer.vb in the Code Editor.
    • C#, abra CustomControl1.cs en el editor de código.C#, open CustomControl1.cs in the Code Editor.
  5. Busque la declaración de clase, que hereda de Control.Locate the class declaration, which inherits from Control.

  6. Cambie la clase base para el control a partir del que desee heredar.Change the base class to the control that you want to inherit from.

    Por ejemplo, si desea heredar de Button, cambie la declaración de clase a lo siguiente:For example, if you want to inherit from Button, change the class declaration to the following:

    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.If you are using Visual Basic, save and close CustomControl1.Designer.vb. Abra CustomControl1.vb en el Editor de código.Open CustomControl1.vb in the Code Editor.

  8. Implemente los métodos o propiedades personalizados que vaya a incorporar el control.Implement any custom methods or properties that your control will incorporate.

  9. Si desea modificar la apariencia gráfica del control, invalide el método OnPaint.If you want to modify the graphical appearance of your control, override the OnPaint method.

    Nota

    Reemplazar OnPaint no le permitirá modificar la apariencia de todos los controles.Overriding OnPaint will not allow you to modify the appearance of all controls. Los controles que tienen todo su dibujo realizado por Windows (por ejemplo, TextBox) nunca llaman a su método de OnPaint y, por tanto, nunca usarán el código personalizado.Those controls that have all of their painting done by Windows (for example, TextBox) never call their OnPaint method, and thus will never use the custom code. Consulte la documentación de ayuda del control determinado que desea modificar para ver si el método OnPaint está disponible.Refer to the Help documentation for the particular control you want to modify to see if the OnPaint method is available. Para obtener una lista de todos los controles de Windows Form, vea el artículo sobre controles que se utilizan en Windows Forms.For a list of all the Windows Form Controls, see Controls to Use on Windows Forms. Si un control no tiene OnPaint enumerado como un método de miembro, no se puede modificar su apariencia invalidando este método.If a control does not have OnPaint listed as a member method, you cannot alter its appearance by overriding this method. Para información sobre el dibujo personalizado, vea Dibujo y representación personalizados de controles.For more information about custom painting, see Custom Control Painting and Rendering.

    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.Save and test your control.

Vea tambiénSee also