Procedimiento para 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 que hereda de Button, el nuevo control tendría el aspecto y actúan como exactamente un estándar Button control.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 reemplazando su OnPaint método.In some controls, you can also change the visual appearance of your inherited control by overriding its OnPaint method.

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos.The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas .To change your settings, choose Import and Export Settings on the Tools menu. Para más información, vea Personalizar el IDE de Visual Studio.For more information, see Personalize the Visual Studio IDE.

Para crear un control heredadoTo create an inherited control

  1. Cree un nuevo proyecto de aplicación de Windows Forms.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 Visual Basic, en la parte superior del Explorador de soluciones, haga clic en Mostrar todos los archivos.If you using 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.

  5. Si está utilizando C#, abra CustomControl1.cs en el Editor de código.If you are using C#, open CustomControl1.cs in the Code Editor.

  6. Busque la declaración de clase que hereda de Control.Locate the class declaration, which inherits from Control.

  7. 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 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  
    
  8. 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.

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

  10. Si desea modificar la apariencia gráfica del control, invalide el OnPaint método.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 representados por Windows (por ejemplo, TextBox) nunca llaman a su OnPaint método 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 para el control determinado que desea modificar para ver si el OnPaint método 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 no tiene un control OnPaint aparece como un método de miembro, no se puede modificar su apariencia reemplazando 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).  
    }  
    
  11. Guarde y pruebe el control.Save and test your control.

Vea tambiénSee also