Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Con C#, puede crear controles personalizados eficaces a través de la herencia. A través de la herencia, puede crear controles que conserven toda la funcionalidad inherente de los controles estándar de Windows Forms, pero que también incorporen funcionalidad personalizada. En este recorrido, crearás un control heredado simple denominado ValueButton. Este botón heredará la funcionalidad del control estándar de Windows Forms Button y expondrá una propiedad personalizada denominada ButtonValue.
Crear el proyecto
Al crear un nuevo proyecto, especifique su nombre para establecer el espacio de nombres raíz, el nombre del 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 nuevo proyecto de biblioteca de controles de Windows Forms y asígneles el nombre ValueButtonLib.
El nombre del proyecto,
ValueButtonLib, también se asigna al espacio de nombres raíz de forma predeterminada. El espacio de nombres raíz se usa para calificar los nombres de los componentes del ensamblado. Por ejemplo, si dos ensamblados proporcionan componentes denominadosValueButton, puede especificar elValueButtoncomponente 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 de 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 instrucción
class,public partial class ValueButtony cambie el tipo del que este control hereda 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
InitializeComponentmétodo y quite la línea que asigna la AutoScaleMode propiedad . Esta propiedad no existe en el Button control .En el menú Archivo , elija Guardar todo para guardar el proyecto.
Nota:
Un diseñador visual ya no está disponible. Dado que el Button control realiza su propia pintura, no se puede modificar su apariencia en el diseñador. Su representación visual será exactamente la misma que la de la clase que hereda de (es decir, Button) a menos que se modifique en el código. Todavía puede agregar componentes, que no tienen elementos de interfaz de usuario, a la superficie de diseño.
Agregar una propiedad al control heredado
Un posible uso de controles heredados de Windows Forms es la creación de controles que son idénticos en aspecto y comportamiento a los controles estándar de Windows Forms, pero que exponen 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, a continuación, haga clic en Ver código en el menú contextual.
Localice la
classinstrucción. Inmediatamente después de ,{escriba el código siguiente:// 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 recupera la
ButtonValuepropiedad . Lagetinstrucción establece el valor devuelto al valor almacenado en la variablevarValueprivada y lasetinstrucción establece el valor de la variable privada mediante el uso de lavaluepalabra clave .En el menú Archivo , elija Guardar todo para guardar el proyecto.
Probar el control
Los controles no son proyectos independientes; deben hospedarse en un contenedor. Para probar el control, debe proporcionar un proyecto de prueba en el cual se pueda ejecutar. También debe asegurarse de que el control esté accesible para el proyecto de prueba mediante la compilación. En esta sección, compilará el control y lo probará en un formulario Windows Forms.
Para construir el control
En el menú Compilar , haga clic en Compilar solución. La compilación debe realizarse correctamente sin errores ni advertencias del compilador.
Para crear un proyecto de prueba
En el menú Archivo , seleccione 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 Prueba.
En el Explorador de soluciones, haga clic con el botón derecho en el nodo Referencias del 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 con la etiqueta Proyectos. El proyecto ValueButtonLib aparecerá en Nombre del 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 Diseñador de vistas en el menú contextual.
En el Cuadro de herramientas, seleccione ValueButtonLib Components (Componentes de ValueButtonLib). Haga doble clic en ValueButton.
Aparece un 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. Tenga en cuenta que son idénticos a las propiedades expuestas por un botón estándar, excepto que hay una propiedad adicional, ButtonValue.
Establezca la propiedad ButtonValue en 5.
En la pestaña Todos los formularios Windows Forms del Cuadro de herramientas, haga doble clic en Etiqueta para agregar un Label control al formulario.
Reubicar la etiqueta en el centro del formulario.
Haga doble clic en
valueButton1.El Editor de código se abre al
valueButton1_Clickevento.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.
Form1Aparece.Haga clic en
valueButton1.El número '5' se muestra en
label1, demostrando que la propiedadButtonValuedel control heredado se ha pasado alabel1a través del métodovalueButton1_Click. Por lo tanto, elValueButtoncontrol hereda toda la funcionalidad del botón estándar de Windows Forms, pero expone una propiedad personalizada adicional.
Consulte también
.NET Desktop feedback