Tutorial: Heredar un control de Windows Forms con C#
Con C#, puede crear controles personalizados eficaces mediante herencia. A través de la herencia puede crear controles que conserven toda la funcionalidad inherente de controles de Windows Forms estándar y además incorporen funcionalidad personalizada. En este tutorial, creará un control heredado simple denominado ValueButton
. Este botón heredará funcionalidad del control Button de Windows Forms estándar y expondrá una propiedad personalizada denominada ButtonValue
.
Crear el proyecto
Cuando cree un proyecto, especifique su nombre para establecer el espacio de nombres raíz, el nombre de 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
En Visual Studio, cree un proyecto de Biblioteca de controles de Windows Forms y llámelo ValueButtonLib.
El nombre del proyecto,
ValueButtonLib
, también se asigna de forma predeterminada al espacio de nombres raíz. El espacio de nombres raíz se utiliza para calificar los nombres de los componentes del ensamblado. Por ejemplo, si dos ensamblados proporcionan componentes denominadosValueButton
, puede especificar su componenteValueButton
medianteValueButtonLib.ValueButton
. Para más información, consulte Espacios de nombres.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 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 derecho en ValueButton.cs y seleccione Ver código.
Busque la línea de la instrucción
class
,public partial class ValueButton
, y cambie el tipo del que hereda este control de UserControl a Button. Esto permite que el control heredado herede 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 disponible ningún diseñador visual. Dado que el control Button realiza su propia representación, no puede modificar su apariencia en el diseñador. Su representación visual será exactamente igual a la de la clase de la que hereda (es decir, Button), a menos que se modifique en el código. Todavía puede agregar componentes, que no tienen ningún elemento de interfaz de usuario, a la superficie de diseño.
Adición de una propiedad al control heredado
Un uso posible de los controles de Windows Forms heredados es la creación de controles que sean idénticos en apariencia y comportamiento a los controles de Windows Forms estándar, pero que expongan propiedades personalizadas. En esta sección, agregará una propiedad denominada ButtonValue
al control.
Para agregar la propiedad Value
En el Explorador de soluciones, haga clic con el botón derecho en ValueButton.cs y haga clic en Ver código en el menú contextual.
Busque la instrucción
class
. Inmediatamente detrás de{
, escriba el siguiente código:// 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 se recupera la propiedad
ButtonValue
. La instrucciónget
establece el valor devuelto en el valor que se almacena en la variable privadavarValue
, y la instrucciónset
establece el valor de la variable privada mediante la palabra clavevalue
.En el menú Archivo, elija Guardar todo para guardar el proyecto.
Prueba del control
Los controles no son proyectos independientes; deben hospedarse en un contenedor. Para probar el control, debe proporcionar un proyecto de prueba donde pueda ejecutarse. También debe hacer que el control resulte accesible al proyecto de prueba al compilarlo. En esta sección, compilará el control y lo probará en Windows Forms.
Para compilar el control
En el menú Compilar, haga clic en Compilar solución. La compilación debería completarse correctamente sin advertencias ni errores del compilador.
Para crear un proyecto de prueba
En el menú Archivo, elija Agregar y haga clic en Nuevo proyecto para abrir el cuadro de diálogo Agregar nuevo proyecto.
Seleccione el nodo Windows, debajo del nodo Visual C#, y haga clic en Aplicación de Windows Forms.
En el cuadro Nombre, escriba Test.
En el Explorador de soluciones, haga clic con el botón derecho en el nodo Referencias para su proyecto de prueba y seleccione Agregar referencia en el menú contextual para mostrar el cuadro de diálogo Agregar referencia.
Haga clic en la pestaña etiquetada como Proyectos. El proyecto ValueButtonLib aparecerá en 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 derecho en Probar y seleccione Compilar.
Para agregar el control al formulario
En el Explorador de soluciones, haga clic con el botón derecho en Form1.cs y elija Ver diseñador en el menú contextual.
En el cuadro de herramientas, seleccione Componentes de ValueButtonLib. Haga doble clic en ValueButton.
Aparece un componente ValueButton en el formulario.
Haga clic con el botón derecho 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 pestaña Todo Windows Forms del cuadro de herramientas, haga doble clic en Etiqueta para agregar un control Label al formulario.
Mueva la etiqueta al centro del formulario.
Haga doble clic en
valueButton1
.Se abre el Editor de código en el evento
valueButton1_Click
.Inserte la siguiente línea de código.
label1.Text = valueButton1.ButtonValue.ToString();
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.
En el menú Depurar, seleccione Iniciar depuración.
Aparece
Form1
.Haga clic en
valueButton1
.Se muestra el número "5" en
label1
, lo que demuestra que la propiedadButtonValue
del control heredado se ha pasado alabel1
a través del métodovalueButton1_Click
. Por lo tanto, su controlValueButton
hereda toda la funcionalidad del botón estándar de Windows Forms, pero expone una propiedad personalizada adicional.
Consulte también
.NET Desktop feedback
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de