windows form here dados

9
Introducción: Desde la primera versi ón de Visual Studio .NET, el entorno integrado (IDE) nos permite crear herenci a visual por medio de l a creación de un proyecto de tipo Librería de clases (ensamblado DLL) que expone como clase uno o más formularios, esos formularios después los podemos usar en otros proyectos, de forma que toda la funcionalidad que tengan las "heredemos" en el nuevo proyecto aprovechando una de las características de la programación orientada a objetos: la herencia, pero aplicada a los formularios, que en el fondo también son clases. Dos formas de usar formularios heredados Para usar la herencia de f ormularios, podemos hacerlo de dos formas distintas: 1- Creando una librería de cl ases con los formularios que queramos usar como base de otros formularios. 2- Creando los formularios base en un proyecto y después indicar que se usen esos formularios como base de otros. En el primer caso, tendremos que cr ear un proyecto del tipo Windows Forms y compilarlo como una DLL, es decir, cambiando el tipo de proyecto de Windows Application (aplicación para Windows) a Biblioteca de clases (Class Library), ya que es un requisito que el tipo de ensamblado sea DLL. En el segundo caso no hay que hacer nada especial , simplemente crear formularios que después usaremos como base de otros formularios y no es necesario que ese proyecto sea una DLL. Crear un proyecto con formularios heredados Para ver cómo podemos crear y us ar los formularios heredados, vamos a crear un proyecto de prueba, este proyecto lo puedes crear tanto en Visual Studio 2005 como en Visual Studio .NET 2003, aunque yo voy a usar el Visual Studio 2005 y las capturas serán de esa versión, pero los pasos comentados son válidos para cualquier versión de Visual Studio para .NET. Nota: En las versiones express de V isual Basic 2005 y Visual C# 2005 también se pueden crear este tipo de formularios heredados, pero no hay un "tipo" de fichero de esta clase que lance el asistente, por tanto, habrá que indicar de forma manual el formulario que va a heredar de otro. 1. Crea un nuevo proyecto de tipo aplicación de Windows con el nombre HerenciaVisual2005. o En mi caso, crearé dos proyectos, el de Visual Basic se llamará HerenciaVisual2005_vb y el de Visual C# se llamará HerenciaVisual2005_cs. o Si estás usando el Vi sual Studio .NET 2003, cambia 2005 por 2003.

Upload: dokycheo

Post on 06-Jul-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 1/9

 

Introducción:

Desde la primera versión de Visual Studio .NET, el entorno integrado (IDE) nospermite crear herencia visual por medio de la creación de un proyecto de tipoLibrería de clases (ensamblado DLL) que expone como clase uno o másformularios, esos formularios después los podemos usar en otros proyectos, de

forma que toda la funcionalidad que tengan las "heredemos" en el nuevo proyectoaprovechando una de las características de la programación orientada a objetos: laherencia, pero aplicada a los formularios, que en el fondo también son clases.

Dos formas de usar formularios heredados

Para usar la herencia de formularios, podemos hacerlo de dos formas distintas:1- Creando una librería de clases con los formularios que queramos usar comobase de otros formularios.2- Creando los formularios base en un proyecto y después indicar que se usenesos formularios como base de otros.

En el primer caso, tendremos que crear un proyecto del tipo Windows Forms y

compilarlo como una DLL, es decir, cambiando el tipo de proyecto de WindowsApplication (aplicación para Windows) a Biblioteca de clases (Class Library), yaque es un requisito que el tipo de ensamblado sea DLL.

En el segundo caso no hay que hacer nada especial, simplemente crear formulariosque después usaremos como base de otros formularios y no es necesario que ese

 

proyecto sea una DLL.

Crear un proyecto con formularios heredados

Para ver cómo podemos crear y usar los formularios heredados, vamos a crear unproyecto de prueba, este proyecto lo puedes crear tanto en Visual Studio 2005

como en Visual Studio .NET 2003, aunque yo voy a usar el Visual Studio 2005 ylas capturas serán de esa versión, pero los pasos comentados son válidos paracualquier versión de Visual Studio para .NET.

Nota: En las versiones express de Visual Basic 2005 y Visual C# 2005 también sepueden crear este tipo de formularios heredados, pero no hay un "tipo" defichero de esta clase que lance el asistente, por tanto, habrá que indicar deforma manual el formulario que va a heredar de otro.

1.  Crea un nuevo proyecto de tipo aplicación de Windows con el nombre

HerenciaVisual2005.

o  En mi caso, crearé dos proyectos, el de Visual Basic se llamará

HerenciaVisual2005_vb y el de Visual C# se llamará

HerenciaVisual2005_cs.

o  Si estás usando el Visual Studio .NET 2003, cambia 2005 por 2003.

Page 2: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 2/9

 

2.  Se creará un formulario llamado Form1, cámbiale el nombre a FormBase.

o  En Visual Studio .NET 2003 tendrás que cambiar manualmente el

nombre.

3.  Agrega una etiqueta y dos botones (déjale los nombres que le asigna el

diseñador).

4.  Los dos botones posiciónalos en la parte de abajo a la derecha y "ánclalos"

abajo y a la derecha.

5.  La etiqueta estará en la parte superior, en la versión 2005 tendrás que

asignarle la propiedad AutoSize a False, de forma que tenga un tamaño

fijo, que será todo el ancho del formulario. Asígnale un alto de 16. También

debes anclarlo, pero para que se fije a todo el ancho del formulario y en la

parte superior.

6.  El aspecto del formulario en modo de diseño es el mostrado en la figura 1.

7.  Compila el proyecto, ya que uno de los requisitos es que el ensamblado esté

creado para poder usar la herencia visual.

Figura 1. El formulario base en modo de diseño

Nota: En Visual Studio .NET 2003 seguramente te dará un error en los proyectosde Visual Basic indicando que no existe el método Sub Main, pero siseleccionas el error, puedes indicar el "objeto" de inicio para que sea elformulario FormBase.

Page 3: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 3/9

 

8.  Vamos a agregar un formulario, pero el tipo será Formulario Heredado 

(Inherited Form).

o  R ecuerda que en las versiones Express ese tipo de formulario no

existe. Después te explico cómo crear este tipo de formularios con las

versiones Express.

9.  Indica el nombre del formulario, que será Form1 (es decir, el nombre que

indicará el Visual Studio).

10. Al pulsar en Aceptar, te mostrará un cuadro de diálogo para que elijas el

formulario en el que te quieres basar, si no has añadido más formularios, te

mostrará el formulario FormBase, tal como puedes ver en la figura 2.

o  Si no te muestra nada, tendrás un aviso indicando que el proyecto

debe estar compilado, por tanto, pulsa en cancelar hasta que

desaparezcan las pantallas y compila el proyecto y vuelve al paso 8.

Figura 2. Asistente de formulario heredado

11. Una vez creado el formulario, éste mostrará los controles que tiene

FormBase con unos candados, tal como puedes ver en la figura 3.

Page 4: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 4/9

 

 Figura 3. El formulario derivado de FormBase

Acceder a los controles heredados

12. El problema es que si intentas cambiar las propiedades de cualquiera de

esos tres controles o quieres añadir eventos a los dos botones, no te lo

permitirá. Y no lo permite, porque esos controles "son privado" del

formulario base, por tanto no podremos escribir código que interactúe con

ellos.

13. Para poder usar y personalizar esos controles, tendremos que modificar "la

visibilidad" de los mismos.

o  En el caso de Visual Basic, la visibilidad (propiedad Modifiers) será

Friend, mientras que en C#, será private.

14. Para cambiar la visibilidad de los dos botones, muestra el formulario base

(FormBase) y selecciona los dos botones, y en la ventana de propiedades

cambia la propiedad Modifiers de forma que el valor sea Protected, tal

como te muestro en la figura 4.

o  Después de hacer ese cambio, seguramente verás una advertencia

indicando de que el proyecto se debe compilar para que esos cambios

surtan efecto.

Page 5: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 5/9

 

 Figura 4. Cambiar la visibilidad de los controles a Protected

15. Una vez compilado el proyecto, verás que al mostrar el formulario Form1 y

seleccionar cualquiera de los botones, en la ventana de propiedades se

verán los valores de forma que se puedan modificar, salvo unas cuantas de

las propiedades que solo se pueden cambiar en el formulario (o clase) base.

16. Ahora puedes hacer doble clic en cualquiera de los botones y se mostrará el

código del evento Click. También puedes cambiar el texto mostrado o

cualquiera de las otras propiedades del botón.

Añadir propiedades al formulario base

17. Tal como tenemos actualmente el código, no podemos cambiar la etiqueta

Label1 del formulario base.

18. Una solución sería definirla como Protected, pero como seguramente lo

único que necesitaremos hacer con esa etiqueta es cambiarle el texto,

vamos a agregar una propiedad al formulario base para que nos permita

cambiar el texto de la etiqueta.

19. Muestra el código del formulario FormBase y añade el siguiente código al

principio del mismo:

Page 6: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 6/9

 

o  En C# no hará falta que lo añadas, ya que esa importación ya estará.

Para Visual Basic: 

Imports System.ComponentModel

Para C#: 

using System.ComponentModel;

20. Esta importación nos permitirá usar atributos para aplicar a las propiedades

del formulario base, de forma que se muestre la descripción de las

propiedades en la ventana de propiedades y para que se muestren esas

propiedades.

21. Añade el siguiente código en la clase FormBase.

Para Visual Basic: 

<Description("Texto de la etiqueta superior"), Browsable(True)> _

Public Property TextoEtiqueta() As String

Get

Return Me.Label1.Text

End Get

Set(ByVal value As String)

Me.Label1.Text = value

End Set

End Property 

Para C#: 

[Description("Texto de la etiqueta superior"), Browsable(true)]

public string TextoEtiqueta

{

get

{

return this.label1.Text;

}

set

{

this.label1.Text = value;

}

Page 7: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 7/9

 

}

22. Este código mostrará una propiedad en el formulario derivado, y al asignarle

un valor veremos que se cambia el texto de la etiqueta. Por supuesto, para

que esa propiedad se muestre en la ventana de propiedades de Form1, (ver

la figura 5), antes debes compilar el proyecto.

Figura 5. La propiedad de FormBase en las propiedades de Form1

23. Como seguramente te imaginarás, el atributo Description sirve para indicar

el texto que se mostrará en el panel inferior de la ventana de propiedades, y

el atributo Browsable con un valor verdadero indica que queremos que la

propiedad se muestre en la ventana de propiedades.

o  En realidad no hace falta indicar Browsable(True), ya que ese es el

valor predeterminado, pero de esa forma queda "constancia" de que

nuestra intención es hacer que se muestre la propiedad en la ventana

de propiedades.

o  También hay que tener en cuenta que en realidad, al indicar un valor

verdadero al atributo Browsable, lo que hacemos es asignar el valor

Page 8: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 8/9

 

BrowsableAttribute.Yes, mientras que al asignar un valor falso, el

valor asignado es BrowsableAttribute.No.

Crear formularios heredados con las versionesExpress

24. Como te dije antes, en Visual Basic 2005 Express y en Visual C# 2005

Express no existe la plantilla para los formularios heredados, por tanto,

debemos crearlos de forma manual.

25. Si sigues los pasos anteriores, en el paso 8 tendrás que añadir un formulario

normal.

26. En Visual Basic, abre el fichero Form1.Designer.vb y cambia el código

que hay en Inherits por el que te muestro abajo.

o  En Visual Basic, para ver ese fichero tendrás que pulsar en el botón

"Mostrar todos los archivos" (Show All Files), que está en la

ventana del Explorador de Soluciones, y es el segundo botón.

Inherits FormBase

27. En C# muestra el código de Form1 y cambia la declaración del formulario

para que sea esta:

public partial class Form1 : FormBase 

28. De esta forma, al mostrar el formulario Form1, verás que se usa el

formulario base.

29. El resto de pasos (desde el paso 11) son los mismos, tanto para Visual

Studio "normal" (cualquiera de las versiones) como para las versiones

Express.

Y esto es todo, más abajo tienes los proyectos de prueba, hay 3 ficheros ZIP en

 

total, uno de ellos es para Visual Studio .NET 2003, otro para la versión normal deVisual Studio 2005 y el otro ZIPl incluye los proyectos para Visual Basic 2005

Page 9: Windows Form Here Dados

5/7/2018 Windows Form Here Dados - slidepdf.com

http://slidepdf.com/reader/full/windows-form-here-dados 9/9

 

Express y Visual C# 2005 Express, que aunque estén en el mismo fichero, tendrásque abrir cada uno con la versión Express correspondiente.

Espero que te sea de utilidad y en muestra de agradecimiento... espero que sepaslo que tienes que hacer, je, je.

Nos vemos.Guillermo

Espacios de nombres usados en el código de esteartículo:

System.Windows.FormsSystem.ComponentModel