Tutorial: Heredar de un control de formularios Windows Forms con Visual C#
Con Visual C# 2005, puede crear controles personalizados eficaces mediante la herencia. A través de la herencia, podrá crear controles que retengan toda la funcionalidad heredada de los controles estándar de formularios Windows Forms y que incorporen también funcionalidad personalizada. En este tutorial, creará un control heredado sencillo denominado ValueButton
. Este botón heredará la funcionalidad del botón estándar del control Button de los formularios Windows Forms y expondrá una propiedad personalizada denominada ButtonValue
.
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 la configuración activa o la edición. Para cambiar la configuración, elija la opción Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.
Crear el proyecto
Cuando cree un nuevo proyecto, debe especificar su nombre para establecer el espacio de nombres de la raíz, el nombre de ensamblado y el de proyecto, además de asegurarse de que el componente predeterminado estará en el espacio de nombres correcto.
Para crear la biblioteca de controles ValueButtonLib y el control ValueButton
En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto para abrir el cuadro de diálogo Nuevo proyecto.
Seleccione la plantilla de proyecto Biblioteca de controles de Windows en la lista de proyectos de Visual C# y escriba ValueButtonLib en el cuadro Nombre.
El nombre del proyecto,
ValueButtonLib
, se asigna también de forma predeterminada al espacio de nombres de la raíz. El espacio de nombres de la raíz se utiliza para calificar los nombres de los componentes del ensamblado. Por ejemplo, si dos ensamblados proporcionan componentes denominadosValueButton
, puede especificar el componenteValueButton
utilizandoValueButtonLib.ValueButton
. Para obtener más información, vea Espacios de nombres (Guía de programación de C#).En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en UserControl1.cs y, a continuación, elija Cambiar nombre en el menú contextual. Cambie el nombre del archivo a ValueButton.cs. Haga clic en el botón Sí cuando se le pregunte si desea cambiar el nombre de todas las referencias al elemento de código '
UserControl1
'.En el Explorador de soluciones, haga clic con el botón secundario del mouse en ValueButton.cs, y seleccione Ver código.
Busque la línea de instrucción class,
public partial class ValueButton
, y cambie el tipo desde el que se hereda el control UserControl a Button. Esta opción permite al control heredado heredar toda la funcionalidad del control Button.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.
Busque el método
InitializeComponent
y quite la línea que asigna la propiedad AutoScaleMode. Esta propiedad no existe en el control Button.En el menú Archivo, elija Guardar todo para guardar el proyecto.
Nota
Ya no hay ningún diseñador visual disponible. Dado que el control Button realiza su propia presentación, no podrá modificar su apariencia en el diseñador. Su representación visual será exactamente la misma que la de la clase desde la que hereda (es decir, Button) a menos que se modifique en el código. Todavía puede agregar componentes, que no tengan ningún elemento de la interfaz de usuario, a la superficie de diseño.
Agregar una propiedad al control heredado
Uno de los usos posibles de los controles heredados de formularios Windows Forms es la creación de controles idénticos en la apariencia y en el funcionamiento a los controles estándar de formularios Windows Forms, pero que expongan propiedades personalizadas. En esta sección, agregará al control una propiedad denominada ButtonValue
.
Para agregar la propiedad Value
En el Explorador de soluciones, haga clic con el botón secundario del mouse en ValueButton.cs y, a continuación, haga clic en Ver código en el menú contextual.
Busque la instrucción class. Inmediatamente después de
{
, escriba el siguiente código:[C#]
// 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 mediante los cuales se almacena y se recupera la propiedad
ButtonValue
. La instrucción get establece el valor devuelto como el valor almacenado en la variable privadavarValue
, y la instrucción set establece el valor de la variable privada mediante el uso de la palabra clave value.En el menú Archivo, elija Guardar todo para guardar el proyecto.
Probar el control
Los controles no son proyectos independientes; deben alojarse en un contenedor. Para probar el control, debe proporcionar un proyecto de prueba en el que ejecutarlo. También debe hacer que el control sea accesible para el proyecto de prueba generándolo (compilándolo). En esta sección, generará el control y lo probará en un formulario Windows Forms.
Para generar el control
En el menú Generar, haga clic en Generar solución.
La generación debe ser correcta, sin errores ni advertencias del compilador.
Para crear un proyecto de prueba
En el menú Archivo, elija Agregar y, a continuación, haga clic en Nuevo proyecto para abrir el cuadro de diálogo Agregar nuevo proyecto.
Seleccione el nodo Windows, bajo el nodo Visual C#, y haga clic en Aplicación para Windows.
En el cuadro Nombre, escriba Test.
En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en el nodo References del proyecto de prueba y, a continuación, seleccione Agregar referencia en el menú contextual para mostrar el cuadro de diálogo Agregar referencia.
Haga clic en la ficha Proyectos. El proyecto
ValueButtonLib
aparecerá en la lista Nombre de proyecto. Haga doble clic en el proyecto para agregar la referencia al proyecto de prueba.En el Explorador de soluciones, haga clic con el botón secundario del mouse en Test y seleccione Generar.
Para agregar el control al formulario
En el Explorador de soluciones, haga clic con el botón secundario en Form1.cs y elija Diseñador de vistas en el menú contextual.
En el Cuadro de herramientas, haga clic en Componentes de ValueButtonLib. Haga doble clic en ValueButton.
Aparecerá un control ValueButton en el formulario.
Haga clic con el botón secundario en ValueButton y seleccione Propiedades en el menú contextual.
En la ventana Propiedades, examine las propiedades de este control. Observe que son idénticas a las propiedades expuestas por un botón estándar, excepto en que hay una propiedad adicional,
ButtonValue
.Establezca la propiedad
ButtonValue
en 5.En la ficha Todos los formularios Windows Forms del Cuadro de herramientas, haga doble clic en Etiqueta para agregar un control de Label al formulario.
Coloque de nuevo la etiqueta en el centro del formulario.
Haga doble clic en
valueButton1
Se abrirá el Editor de código en el evento
valueButton1_Click
.Escriba la siguiente línea de código.
[C#]
label1.Text = valueButton1.ButtonValue.ToString();
En el Explorador de soluciones, haga clic con el botón secundario del mouse en Test y elija Establecer como proyecto de inicio en el menú contextual.
En el menú Depurar, elija Iniciar depuración.
Aparece
Form1
.Haga clic en
valueButton1
.Se muestra el número '5' en
label1
, que muestra que la propiedadButtonValue
del control heredado se ha pasado alabel1
mediante el métodovalueButton1_Click
. Así, el controlValueButton
hereda toda la funcionalidad del botón estándar de formularios Windows Forms, pero expone una propiedad adicional, personalizada.
Vea también
Tareas
Cómo: Mostrar un control en el cuadro de diálogo Personalizar cuadro de herramientas
Tutorial: Crear un control compuesto con Visual C#
Otros recursos
Programar con componentes
Tutoriales sobre la creación de componentes