Está en la página 1de 0

Marco Besteiro y Miguel Rodrguez Controles Windows

Los controles principales


En el anterior captulo se han estudiado las clases principales para el diseo de
aplicaciones Windows. A continuacin se describen los controles ms utilizados para
este tipo de aplicaciones.
Las clases RadioButton y CheckBox

La clase base de estos dos controles, al igual que el de la clase But t on es But t onBase.

El control Radi oBut t on se utiliza cuando se pretende elegir una nica opcin entre
varias. Un buen ejemplo lo constituye un formulario en que el usuario debe elegir, al
rellenar sus datos personales, si es hombre o mujer. Un Radi oBut t on slo puede tener
dos estados: seleccionado o no seleccionado. Los controles Radi oBut t on deben ser
mutuamente excluyentes entre s. Esto se consigue haciendo que pertenezcan a una
misma unidad lgica por medio de un control Gr oupBox, o bien, si nicamente es una
unidad, el formulario que los contiene los agrupa.

Para hacer esto, se ubica en primer lugar en el formulario el control Gr oupBox y
posteriormente, se van colocando en su interior los controles Radi oBut t on que deban
estar ligados entre s. Si no se hace de esta manera, pueden elegirse varias opciones
Radi oBut t on de manera simultnea, es decir, no sern excluyentes entre s.

Un CheckBox permite elegir varias opciones que no sean mutuamente excluyentes. Un
buen ejemplo, es un formulario en el que se pregunte acerca de los idiomas que se
habla. A diferencia de un Radi oBut t on, este control puede tener tres estado:
seleccionado, no seleccionado e inhabilitado, que es un estado en el cual el control se
dibuja en gris y no tiene ningn efecto hacer click sobre l.

A continuacin se estudian las propiedades y eventos ms importantes y se realizar un
sencillo ejemplo.

Propiedades
Appear ance
Define la apariencia del control, bien con apariencia estndar o bien
con apariencia de un botn en 3D.
Aut oCheck
Hace que el control cambie de estado siempre que se haga click sobre
l.
Checked
Indica si el control est en estado seleccionado o no.
CheckSt at e
Indica el estado de seleccin del control. Slo para el CheckBox. Puede
ser Unchecked, Checked o I ndet er mi nat e. En este ltimo, el control
se dibuja en gris.
Thr eeSt at e
( Sl o CheckBox) Propiedad booleana. A Fal se no se permite el
estado I ndet er mi nat e. A Tr ue, se permiten los tres estados


1/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Eventos
Los eventos ms utilizados por supuesto que tambin son eventos de estos controles
todos los que se derivan de la clase Cont r ol - son los siguientes:

CheckedChanged
Ocurre cuando cambia la propiedad Checked. Es el evento por
defecto.
Cl i ck
Ocurre al realizar un click de ratn sobre el control.
CheckedSt at eChanged
Ocurre cuando cambia la propiedad CheckedSt at e ( Sl o
CheckBox)


La clase GroupBox

Cuando se coloca sobre un formulario un control, el formulario es el padre par ent - de
ese control y ste es hijo. Algunas de las propiedades del formulario tipos de letra,
colores, etc...- pasan de manera automtica del padre al hijo. Si se cambian en el
padre, cambiarn tambin en el hijo. Slo si se cambian stas propiedades en el hijo,
dejarn de tener el mismo comportamiento que en el padre.

Lo mismo ocurre cuando se sitan una serie de controles en un control Gr oupBox. ste
es el padre de todos los controles que se siten en l y su comportamiento en algunas
propiedades es idntico. Por eso, cuando se mueve un control Gr oupBox, se desplazan
tambin con l todos los controles que contiene. Si se inhabilita un control Gr oupBox,
todos los controles hijo se inhabilitarn con l. Lo mismo sucede al cambiar el color
del fondo o el tipo de letra.

Estos controles se utilizan para agrupar controles. Si contiene controles Radi oBut t on,
sern mutuamente excluyentes entre s.

No se estudian aqu ninguna propiedad porque las hereda todas de la clase Cont r ol .

La clase ToolTip

En general, las aplicaciones ms recientes incorporan una pequea etiqueta
autoexplicativa de la funcionalidad de los controles cuando se deja el ratn inmvil
sobre ellos durante un breve espacio de tiempo. Es muy sencillo aadir esta
caracterstica a las aplicaciones de Windows. Para ello, se debe aadir un control
Tool Ti p al formulario y de manera automtica se aade una nueva propiedad en todos
los controles de ese formulario denominada Tool Ti p on . . . . Basta entonces con
definir un texto en la ventana de propiedades de cada control. Cuando se ejecute la
aplicacin, se habr aadido esta caracterstica.

Son pocas las propiedades y mtodos de esta aplicacin y no se suelen modificar. Las
ms importantes de esta clase son:

2/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Propiedades

Act i ve
Define si el control est activo o no.
Aut omat i cDel ay
Es el tiempo en milisegundos, que transcurre antes de que
se visualice la etiqueta.
Aut oPopDel ay
Es el tiempo en milisegundos, que permanece visible la
etiqueta.
I ni t i al Del ay
Es el tiempo en milisegundos, que el cursor debe estar
inmvil para que se visualice la etiqueta.
ReshowDel ay
Es el tiempo en milisegundos, que transcurre antes de que
se visualice la etiqueta cuando se pasa de una regin a
otra.


Mtodos

st r i ng Get Tool Ti p( Cont r ol c)
Obtiene el texto de un Tool Ti p asociado a
un determinado control.
Set Tool Ti p( Cont r ol c, st r ai ng st r )
Define el texto de un Tool Ti p asociado a
un determinado control.

Observacin: la clase Tool Ti p no deriva de la clase Cont r ol , sino de la clase
Component .

Las clases ListBox y CheckListBox
Un control Li st Box permite presentar una lista de elementos que el usuario puede
seleccionar pulsando con el ratn o con el teclado. Tiene dos modos de seleccin:
simple o mltiple. El modo seleccin se define en la propiedad Sel ect i onMode. Puede
tambin tener una o varias columnas -propiedad Mul t i Col umn -
Un control CheckLi st Box es una lista que tiene un control CheckBox en la parte
izquierda de cada elemento, indicando si est seleccionado o no. Un ejemplo es el de la
figura 16.8.
Estas dos clases se estudian juntas porque su funcionalidad es muy parecida y, por lo
tanto, coinciden muchas de sus propiedades y eventos.
La jerarqua de clases es la de la figura 16.1:




3/48
Li st Cont r ol
Li st Box ComboBox
Cont r ol
Marco Besteiro y Miguel Rodrguez Controles Windows







Figura 16.1

Las propiedades I t ems, Sel ect edI t ems y Sel ect edI ndi ces dan acceso a las tres
colecciones que controlan la informacin de un Li st Box, que son las que a
continuacin se indican:
Li st Box. Obj ect Col l ect i on
Es la coleccin que contiene todos los
elementos del control Li st Box.
Li st Box. Sel ect edObj ect Col l ect i on
Es la coleccin que contiene todos los
elementos seleccionados del control Li st Box.
Li st Box. Sel ect edI ndexCol l ect i on
Es la coleccin que contiene todos los ndices
de los elementos seleccionados.

Suponga, por ejemplo, que se tiene un Li st Box con los cinco elementos de la tabla
siguiente.
Indice Item Estado en el ListBox
0 obj et o1 No sel ecci onado
1 obj et o2 Sel ecci onado
2 obj et o3 No sel ecci onado
3 obj et o4 Sel ecci onado
4 obj et o5 Sel ecci onado
La coleccin Li st Box. Obj ect Col l ect i on contiene los cinco objetos.
La coleccin Li st Box. Sel ect edObj ect Col l ect i on almacena los siguientes objetos:
Indice Item
0 obj et o2
1 obj et o4
2 obj et o5
La coleccin Li st Box. Sel ect edI ndexCol l ect i on almacena los siguientes ndices:
Indice Indice del elemento
0 2
4/48
Marco Besteiro y Miguel Rodrguez Controles Windows

1 4
2 5
Los mtodos comunes a todas las colecciones Add, Remove, I nser t , etc- permiten
trabajar con este control de una manera muy sencilla. A continuacin se especifican las
propiedades ms importantes:
Propiedades
I t ems
Es la coleccin que contiene todos los items o elementos de la lista.
Esta propiedad se utiliza para aadir, insertar o eliminar elementos
de la lista, por medio de los mtodos Add, I nser t , Remove, etc... En
tiempo de diseo tiene un editor de la coleccin, para aadir,
insertar o eliminar los elementos que estarn presente es al
comienzo de la ejecucin de la aplicacin.
Sel ect edI ndex
Es un valor entero que indica el ndice del elemento seleccionado.
Si su valor es 1, no hay ningn elemento seleccionado.
Sel ect edI t em
Es el item o elemento seleccionado en la lista.
Sel ect edI ndi ces
Devuelve una coleccin con una lista de ndices de los elementos de
la lista seleccionados.
Sel ect edI t ems
Devuelve una lista de los elementos o items seleccionados.
Sel ect i onMode
Indica el modo de seleccin de la lista. Tiene cuatro posibles
valores:
None: No se puede seleccionar ningn item.
One: Slo es posible seleccionar un elemento.
Mul t i pl eSi mpl e: se pueden seleccionar varios items de manera
simultnea
Mul t i Ext ended: Igual que la anterior, pero el usuario puede utilizar
las teclas CTRL, SHI FT y las flechas para hacer sus selecciones.
Mul t i Col umn
Define el nmero de columnas de la lista.
Col umnWi dt h
En una lista de varias columna, esta propiedad define el ancho de
ellas
Sor t ed
Propiedad booleana que indica si la lista est ordenada por orden
alfabtico.


Adems de estas propiedades, la clase CheckLi st Box tiene otras cuatro importantes
propiedades que se explican a continuacin.

CheckedI ndi ces
Es una coleccin que contiene los elementos de la lista que estn
en estado Checked o I ndet er mi nat e.
CheckedI t ems
Es la coleccin de los elementos de la lista que estn en estado
Checked o I ndet er mi nat e.
CheckedOnCl i ck
Propiedad booleana que indica si un item cambiar de estado
cuando el usuario pulse con el ratn en l.
Thr eeDCheckBoxes
Indica si la apariencia del control es 3D

Mtodos
5/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Hay varios mtodos muy interesantes a la hora de trabajar con estos controles.

Cl ear Sel ect ed( )
Anula la seleccin de la lista
Fi ndSt r i ng( st r i ng st r )
Busca la primera cadena de la lista que comience
con el st r i ng especificado.
Fi ndSt r i ngExact ( st r i ng st r )
Busca la primera cadena que coincida con la cadena
especificada.
Get Sel ect ed( i nt n)
Devuelve un valor booleano indicando si el item n
est seleccionado.
Set Sel ect ed( i nt n, bool b)
Selecciona o anula la seleccin del elemento de
ndice n dependiendo del valor booleano pasado, b.
Get I t emChecked( i nt n)
Devuelve un valor booleano indicando si el item n
est o no seleccionado. (Slo CheckLi st Box)
Get I t emCheckSt at e( i nt n)
Devuelve un valor indicando el estado del item n.
(Slo CheckLi st Box)

Eventos

Adems del resto de los eventos que heredan de la clase Cont r ol , estas clases tienen
dos eventos especficos:

I t emCheck
Ocurre cuando cambia el estado de uno de los elemento de la
lista.
Sel ect edI ndexChanged
Ocurre cuando cambia el ndice del elemento seleccionado.
Es el evento por defecto.

Ejemplo: trabajando con el control ListBox.

6/48
Marco Besteiro y Miguel Rodrguez Controles Windows



Figura 16.2


Se trata de una aplicacin que tiene dos controles Li st Box, de nombres l bI y l bD, dos
cajas de texto, con propiedades Name t ext oI y t ext oD y siete botones, cuatro de ellos
para intercambiar elementos entre las listas, de propiedad Name bt nD, bt nDD, bt nI I y
bt nI , y de propiedades Text >, >>, << y <, dos ms para aadir elementos a las listas, de
propiedad Name bt nAnadi r I y bt nAnadi r D y de propiedad Text Aadi r y un botn
que servir para terminar la aplicacin de propiedad Name bt nCer r ar y propiedad
Text Cer r ar .

La aplicacin debe realizar las siguientes tareas:
Aadir los nombres de ciudades escritos en las cajas de texto t ext oI o t ext oD
situados en la parte inferior de los Li st Box al pulsar los botones bt nAadi r I o
bt nAadi r D respectivamente.
Si se selecciona una ciudad en el Li st Box de la izquierda y se pulsa el botn >
o < dicho elemento pasar de una lista a otra.
Si se pulsa >> o << pasan todos los elementos a la otra lista.
Haciendo doble click en una lista, pasa el elemento que se ha pulsado a la otra
lista.
Pulsando el botn Cer r ar , concluye la aplicacin.


En primer lugar hay que disear grficamente la aplicacin y asignar las propiedades
Name y Text correspondientes y a continuacin escribir el cdigo de los distintos
eventos.

7/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Utilizando el editor que proporciona este control pulse sobre los puntos suspensivos
correspondientes a la propiedad I t ems del Li st Box- escriba algunos elementos, para
que estn presentes al comienzo de la aplicacin (Figura 16.2).

a) El botn bt nAnadi r D debe:
Recoger el texto en la propiedad Text de la caja t ext oI y aadirlo al l bI
con el mtodo Add de I t ems.
Borrar el texto de la caja de texto
Devolver el foco a la caja de texto.

El cdigo correspondiente es:

l bI . I t ems. Add( t ext oI . Text ) ;
t ext oI . Cl ear ( ) ;
t ext oI . Focus( ) ;

b) Botn bt nD:

/ / Se r ecoge el el ement o sel ecci onado en el l bI con l a pr opi edad
Sel ect edI t em
/ / y se aade al l bD con el mt odo Add de I t ems
l bD. I t ems. Add( l bI . Sel ect edI t em) ;
/ / Se bor r a el el ement o sel ecci onado, con el mt odo Remove de
I t ems
l bI . I t ems. Remove( l bD. Sel ect edI t em) ;

c) Botn bt nDD:
Se recogen en un array de objetos todos los elementos de la l bI con la
propiedad Al l de I t ems.
Se recorre el array y se van aadiendo al l bD,con la propiedad Add de I t ems.
Se borran todos los elementos del l bI con el mtodo Cl ear de I t ems.


obj ect [ ] ar r ayObj et os=l bI . I t ems. Al l ;

f or each( obj ect i i n ar r ayObj et os)
{
l bD. I t ems. Add( i ) ;
}

l bI . I t ems. Cl ear ( ) ;

d) Evento doble-click en la lista l bI :
El cdigo ser el mismo que el del botn bt nD, as que en lugar de escribirlo de
nuevo, se selecciona el evento doble-click del l bI y se selecciona el evento de
nombre bt nD_Cl i ck.
e) Para cerrar la aplicacin, basta incluir el cdigo siguiente del bt nCer r ar :

Appl i cat i on. Exi t ( ) ;

Los cdigos de los dems botones y el hecho de considerar la posibilidad de que se
pulse el bt nD por ejemplo- sin estar seleccionado ningn elemento de la lista -que
lleva consigo un error en tiempo de ejecucin se dejan al lector.
8/48
Marco Besteiro y Miguel Rodrguez Controles Windows


Se propone tambin la realizacin de esta misma aplicacin pero en donde se permita la
seleccin mltiple en los Li st Box.

Ms adelante, al explicar la clase St at usBar se realiza un ejemplo que utiliza la clase
CheckLi st Box.
La clase ComboBox
Al igual que la clase Li st Box, esta clase deriva de la clase Li st Cont r ol . El control
correspondiente a esta clase combina tres controles: un Text Box, un But t on y un
Li st Box. En este control la seleccin no puede ser mltiple y es posible, dependiendo
del valor de algunas propiedades aadir elementos a travs del Text Box.

Generalmente se utiliza para seleccionar una entrada del usuario, pero ahorrando
espacio en el formulario. Al hacer click en la flecha del ComboBox se despliega la lista y
es posible hacer la seleccin. Tambin se puede trabajar con el teclado.

Propiedades
Muchas de las propiedades coinciden con las de un Text Box y las de un Li st Box. Por
esto, la lista de propiedades de este control es muy extensa. Se sealan aqu las ms
comunes y utilizadas.

Dr opownSt yl e
Especifica uno de los tres modos de presentacin del control:
Dr opDown: Se puede editar el Text Box y al pulsar la flecha del
control, se despliega la lista.
Si mpl e: igual a Dr opDown, excepto que se despliega la lista de
manera parecida a un Li st Box.
Dr opDownLi st : No puede editarse el Text Box y al pulsarse la
flecha del control se despliega la lista.
Dr oppedDown
Propiedad booleana. Indica si el ComboBox est o no desplegado
I t ems
Es la coleccin de todos los elementos del control. A travs de ella,
pueden aadirse o eliminarse elementos de la lista. En tiempo de
diseo, tiene un editor para aadir de manera muy sencilla
elementos a la coleccin y por lo tanto al control.
MaxLengt h
Especifica el nmero de caracteres que es posible introducir en el
Text Box del control.
Sel ect edI ndex
Indica el ndice del elemento seleccionado.
Sel ect edI t em
Indica el elemento seleccionado.
Sel ect edText
Es el texto seleccionado en el Text Box de la lista.
Sel ect i onSt ar t
Es el ndice del primer carcter seleccionado en el Text Box.
Sel ect i onLengt h
Es la longitud del texto seleccionado en el TexBox
Sor t ed
Propiedad booleana que indica si los elemento del control estn
ordenados.


Eventos
9/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Los eventos principales adems de los heredados de Cont r ol - son:

Dr opDown
Ocurre cuando la lista del ComboBox se despliega
Sel ect edI ndexChanged
Ocurre cuando cambia la seleccin de la lista.
Text Changed
Ocurre cuando cambia la propiedad Text cambia


Ejemplo: trabajando con el control ComboBox.

Cree un nuevo proyecto denominado Pr oyect oComboBox
Aada un control ComboBox con las siguientes propiedades:
Name: cbFut bol
I t ems: Pulse en los puntos suspensivos y aparecer el editor de la figura 16.3:



Figura 16.3

Aada unos cuantos equipos de ftbol.
Escriba en el constructor del formulario cdigo para seleccionar uno de ellos. En
este caso, se selecciona el primero ndice 0-.

publ i c For m1( )
{
I ni t i al i zeComponent ( ) ;
cbFut bol . Sel ect edI ndex=0;
l Equi po. Text =cbFut bol . Sel ect edI t em. ToSt r i ng( ) ;
}

10/48
Marco Besteiro y Miguel Rodrguez Controles Windows

a) Aada una etiqueta y cambie sus propiedades:
Name: l Equi po
Text : ( Vac o)

La ubicacin de los elementos debe ser parecida a la de la figura 16.4:



Figura 16.4

b) Se pretende que cuando el usuario cambie la seleccin en el ComboBox, el texto
del elemento elegido se asigne a la propiedad Text de la etiqueta. Para ello,
escriba el siguiente cdigo en el mtodo cbFut bol _Sel ect edI ndexChanged
que ser el que maneje el evento Sel ect edI ndexChanged:

pr i vat e voi d cbFut bol _Sel ect edI ndexChanged( obj ect sender ,
Syst em. Event Ar gs
e)
{
l Equi po. Text = cbFut bol . Sel ect edI t em. ToSt r i ng( ) ;
}
11/48
Marco Besteiro y Miguel Rodrguez Controles Windows


Las clases NumericUpDown y DomainUpDown

Son dos clases que permiten recorrer una lista de cadenas (Domai nUpDown) o de
nmeros (Numer i cUpDown) para que el usuario realice una eleccin. Se recorre la lista
de los valores por medio de un par de pequeos botones que indican si el
desplazamientoes hacia arriba o hacia abajo.

Un ejemplo de utilizacin de estos controles lo constituye la pantalla para configurar la
impresin de documentos en Microsoft Word, en la opcin nmero de copias que se
desean hacer (figura 16.5). Se permite al usuario escribir el nmero en el control o bien,
sin tener que utilizar el teclado, realizar la seleccin con pulsaciones sobre las flechas.


Figura 16.5

Domai nUpDown y Numer i cUpDown derivan de una clase comn llamada UpDownBase que
proporciona la funcionalidad bsica a ambas. A su vez, sta deriva de la clase
Scr ol l abl eCont r ol y sta de Cont r ol . Por lo tanto, sus miembros son comunes a
ambas.

Propiedades

Propiedades de UpDownBase:
12/48
Marco Besteiro y Miguel Rodrguez Controles Windows


bool I nt er cept Ar r owKeys
Indica si el usuario puede utilizar o no las
flechas para seleccionar valores.
bool ReadOnl y
Indica si el usuario puede introducir un dato
para cambiar el texto del control escribiendo
con el teclado.
st r i ng Text
Texto del control


Propiedades DomainUpDown


Domai nUpDownI t emCol l ect i on I t ems
Coleccin de los elementos del control
i nt Sel ect edI ndex
ndice del elemento seleccionado
obj ect Sel ect edI t em
Elemento seleccionado
bool Sor t ed
Indica si los elementos estn ordenados.

Propiedades de Numer i cUpDown


i nt Deci mal Pl aces
bool ThousandsSepar at or
bool Hexadeci mal
Configuran la presentacin del nmero en
el control.
deci mal I ncr ement
Incremento al pulsar el control. Por
defecto es 1.
deci mal Mi ni mun
deci mal Maxi mun
Valores mximo y mnimos
deci mal Val ue
Valor del texto del control

Se realiza un ejemplo con este control ms adelante, al explicar el control TabCont r ol .

La clase Panel

Esta clase deriva de la clase Scr ol l abl eCont r ol y sta de la clase
Cont r ol .
Un panel es un control que puede contener a otros controles. Se puede utilizar un panel
para agrupar colecciones de controles como Radi oBut t on. Como otros controles
contenedores, si su propiedad Enabl ed es f al se, los controles que contiene tambin
tendrn esa propiedad a f al se.
Por defecto, se presenta sin bordes, aunque pueden definirse por medio de su propiedad
Bor der St yl e.
Panel deriva de la clase Scr ol l abl eCont r ol y por ello proporciona la propiedad
Aut oScr ol l para disponer de barras de desplazamiento en el panel si se desea. Esto es
muy til cuando se tienen muchos controles y no pueden contenerse todos en un
formulario por falta de espacio fsico en la ventana que los contiene o bien si se tiene
una imagen que ocupa una superficie mayor que el control que lo contiene. Esta es la
13/48
Marco Besteiro y Miguel Rodrguez Controles Windows

gran diferencia con un control Gr oupBox. Sin embargo, la funcionalidad de ambas es
igual ya que ambas se utilizan como contenedores de controles.

La clase StatusBar (Barra de estado)

El control St at usBar o barra de estado, se utiliza generalmente para proporcionar
informacin al usuario acerca del estado de la aplicacin. Dicha informacin se puede
dividir en paneles.

Puede tener tantos paneles como se desee y en ellos se puede presentar texto o imgenes
(figura 16.6). Un ejemplo muy corriente lo constituye la barra de estado del procesador
de texto Word de Microsoft, donde se informa de la pgina, la seccin, el nmero total
de pginas, la lnea y columna dentro de la pgina actual, etc...

Aunque generalmente se coloca en la parte inferior del un formulario, puede situarse en
cualquier otro lugar.



Figura 16.6

Esta clase deriva directamente de la clase Cont r ol .
La clase St at usBar se usa para crear una barra de estado y la clase St at usBar Panel
para crear paneles de la barra de estado.
/ / Se cr ean una bar r a de est ado y dos panel es
t hi s. st at usBar 1 = new Syst em. Wi ndows. For ms. St at usBar ( ) ;
St at usBar Panel panel 1 = new St at usBar Panel ( ) ;
St at usBar Panel panel 2 = new St at usBar Panel ( ) ;
Para aadir paneles a la barra de estado, se ha de llamar al mtodo
St at usBar . Panel s. AddRange. Por ejemplo:
14/48
Marco Besteiro y Miguel Rodrguez Controles Windows

st at usBar 1. Panel s. AddRange( new St at usBar Panel [ ] {panel 1, panel 2}) ;
Se puede escribir texto en una barra de estado, asignndoselo a la propiedad Text del
control. Pero tambin es posible asignar varios paneles para presentar una informacin
ms rica en detalles.

Como antes se ha mencionado, puede insertar imgenes en una barra de estado en el
interior de un control Panel . Para ello, debe utilizarse la propiedad I con del Panel .
I con i cono = new I con( @" c: \ mouse. i co" ) ;
panel 1. I con = i cono;
Podra aadirse informacin sobre la hora en el otro panel:
panel 2. Text = Dat eTi me. Now. ToSt r i ng( ) ;
Propiedades
Las propiedades ms importantes de esta clase son las siguientes:

Panel s
De slo lectura. Es la coleccin de paneles de la barra de
herramientas. Se utiliza para aadir o eliminar elementos del control.
En tiempo de diseo se proporciona un pequeo editor que facilita
enormemente la tarea de especificar el comportamiento de cada
panel. Para llamar a cada panel, se puede hacer por su nombre o bien
por medio de su ndice: Panel [ 0] , Panel [ 1] ,... El texto de
cualquiera de ellos lo define la propiedad Text : Panel [ 0] . Text ,
Panel [ 1] . Text , etc. (Figura16.7)
Bacgr oundI mage
Es posible asignar una imagen de fondo al control a travs de esta
propiedad.
ShowPanel s
Propiedad booleana que permite o anula la posibilidad de presentar
paneles en la barra.
Text
Es el texto que aparece en la barra de herramientas, slo en el caso
de que no haya paneles.


Eventos
No se suelen utilizar eventos en este control, aunque si se pretende dibujar un control
manualmente, son necesarios los siguientes:

Dr awI t em
Ocurre cuando el panel que tiene el estilo Owner Dr aw necesita ser
redibujado
Panel _Cl i ck
Cuando se hace click sobre un panel de la barra de estado

Para dibujar manualmente un panel es necesario tener la propiedad St yl e del panel a
Owner Dr aw y escribir el cdigo en el evento Dr awI t em.

15/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Como anteriormente se ha dicho, cada panel de la barra de estado es un objeto o
instancia de la clase St at usBar Panel . Esta clase encapsula la informacin referida a
cada uno de los paneles de la coleccin de paneles. Por ejemplo, permite definir si es un
simple texto o el estilo del panel o un icono.

Ejemplo: trabajando con barras de estado.

La siguiente aplicacin actualiza en la barra de estado las selecciones realizadas en
diferentes controles.

a) Cree un nuevo proyecto llamado Pr oyect oBar r aDeEst ado. Cambie la
propiedad Name del formulario a For mul ar i oPr i nci pal y modifique en el
mtodo Mai n( ) la lnea

Appl i cat i on. Run( new For m1( ) ) ;

por la lnea: (OJ O ver versin definitiva)

Appl i cat i on. Run( new For mul ar i oPr i nci pal ( ) ) ;

Modifique la propiedad Text del formulario a For mul ar i o Pr i nci pal

b) Aada al formulario los siguientes controles en la posicin aproximada de la
figura 16.8 y con las propiedades que se indican:

Li st Box
Name: l i st a
Sel ect Mode: One
I t ems: ( Hacer l o con el edi t or )
J an
Sevi l l a
Gr anada
Cr doba
Cdi z
Huel va
Al mer a
Gr oupBox
Name: gr oupBox1
Text : Sexo
Aada a gr oupBox1 los siguientes controles:
Radi oBut t on:
Name: r bHombr e
Text : Hombr e
Checked: Tr ue
Radi oBut t on:
Name: r bMuj er
Text : Muj er
Checked: Fal se
Gr oupBox
Name: gr oupBox2
Text : I di omas
Aada a gr oupBox2 l os si gui ent es cont r ol es:
CheckBox:
16/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Name: cbI ngl es
Text : I ngl s
Checked: Fal se
CheckBox:
Name: cbFr ances
Text : Fr ancs
Checked: Fal se

CheckBox:
Name: cbAl eman
Text : Al emn
Checked: Fal se

CheckedLi st Box
Name: cl bLenguaj e
CheckedOnCl i ck: Tr ue
I t ems:
(Con el editor aada los siguientes strings)
J ava
C#
Pascal
For t r an
Cobol
C++
C
St at usBar
Name: sbEst ado
Panel s:
(Con el editor que se proporciona)
Aadi r l os si gui ent es ( Ver f i gur a)
Name: sbpCi udad
Name: sbpSexo
Name: sbpI di oma
Name: sbpLenguaj e
En todos: Text : ( Vac o)
ShowPanel : Tr ue
Aut osi ze: Fal se en los dos primeros y
Tr ue en los otros dos.

17/48
Marco Besteiro y Miguel Rodrguez Controles Windows



Figura 16.7

Ms o menos, el aspecto final de la aplicacin debe parecerse al de la figura 16.8:


Figura 16.8

c) Se van a utilizar cuatro variables privadas de tipo st r i ng para cada uno de los
paneles denominadas st r Ci udad, st r Sexo, st r I di oma y st r Lenguaj e. En
el constructor del formulario se inicializan, como se indica a continuacin:

pr i vat e st r i ng st r Ci udad;
pr i vat e st r i ng st r Sexo;
18/48
Marco Besteiro y Miguel Rodrguez Controles Windows

pr i vat e st r i ng st r I di oma;
pr i vat e st r i ng st r Lenguaj e;

publ i c For mul ar i oPr i nci pal ( )
{
I ni t i al i zeComponent ( ) ;
st r Ci udad=" J an" ;
st r Sexo=" Hombr e" ;
st r I di oma=" Ni nguno" ;
st r Lenguaj e=" Ni nguno" ;
l i st a. Sel ect edI ndex=0;
Act ual i zar Bar r a( ) ;
}

En la ltima lnea, se aade un mtodo que recoge la seleccin de cada control y
la escribe en cada panel. Su cdigo es:

publ i c voi d Act ual i zar Bar r a( )
{
sbEst ado. Panel s[ 0] . Text =st r Ci udad;
sbEst ado. Panel s[ 1] . Text =st r Sexo;
sbEst ado. Panel s[ 2] . Text =st r I di oma;
sbEst ado. Panel s[ 3] . Text =st r Lenguaj e;
}

d) Para recoger el tem cada vez que se cambie la seleccin de la lista se debe tratar
el evento Sel ect edI ndexChanged. Escriba el siguiente cdigo

pr i vat e voi d l i st a_Sel ect edI ndexChanged( obj ect sender , Event Ar gs
e)
{
st r Ci udad=l i st a. Sel ect edI t em. ToSt r i ng( ) ;
Act ual i zar Bar r a( ) ;
}

e) En los controles Radi oBut t on, se obtiene el elemento seleccionado tratando el
evento CheckedChanged. Este mtodo trata el cambio de estado en cualquiera
de los dos controles y por eso, hay que definir el mismo mtodo para los dos. En
este caso se ha dado a los dos el nombre del primero de ellos
r bHombr e_CheckedChanged:

pr i vat e voi d r bHombr e_CheckedChanged( obj ect sender , Event Ar gs e)
{
i f ( r bHombr e. Checked)
st r Sexo=r bHombr e. Text ;
el se
st r Sexo=r bMuj er . Text ;
Act ual i zar Bar r a( ) ;
}

f) La misma idea se utilizar para los siguientes controles CheckBox. El mtodo
comn que tratar a los tres controles se llamar cb_CheckedChanged.

pr i vat e voi d cb_CheckedChanged( obj ect sender , Syst em. Event Ar gs
e)
{
st r I di oma=" " ;
19/48
Marco Besteiro y Miguel Rodrguez Controles Windows

i f ( cbI ngl es. Checked)
st r I di oma+=cbI ngl es. Text +" " ;
i f ( cbFr ances. Checked)
st r I di oma+=cbFr ances. Text + " " ;
i f ( cbAl eman. Checked)
st r I di oma+=cbAl eman. Text ;
Act ual i zar Bar r a( ) ;
}

g) Por ltimo, se recogen las elecciones en el control CheckLi st Box, tratando el
evento Sel ect edI ndexChanged mediante el mtodo
cl bLenguaj e_Sel ect edI ndexChanged

pr i vat e voi d cl bLenguaj e_Sel ect edI ndexChanged( obj ect sender ,
Syst em. Event Ar gs
e)
{
st r Lenguaj e=" " ;
f or each( st r i ng st r i n cl bLenguaj e. CheckedI t ems)
st r Lenguaj e+=st r + " " ;
Act ual i zar Bar r a( ) ;
}

En este mtodo se recorre toda la coleccin de los items que tienen el estado a
Checked y se aade su texto al st r i ng correspondiente. Luego se actualiza la
barra.



La clase TabControl

Es un control que se utiliza cuando se quiere organizar mucha informacin de manera
relacionada. Un buen ejemplo lo constituye, la ventana de opciones de Microsoft Word
(figura 16.9).

20/48
Marco Besteiro y Miguel Rodrguez Controles Windows


Figura 16.9: ventana de opciones de Microsoft Word.

Este control tiene varios TabPage o pestaas que trabajan de manera similar a un
Gr oupBox. Para utilizar este control, se deben aadir el nmero de pestaas que se
deseen a una coleccin del control llamada TabPages. Visual Studio proporciona un
editor para aadir o eliminar las pestaas de la coleccin de manera grfica, rpida e
intuitiva. Se puede acceder a l a travs de la propiedad TabPages del control.
Posteriormente se van colocando los controles en cada pestaa.

Propiedades
Las propiedades ms importantes son:


Al i gnment
Determina si las etiquetas son desplegadas en la parte
superior, izquierda, derecha o inferior opciones Top, Lef t ,
Ri gt h y Bot t om- del control.
Appear ance
Determina la apariencia de las etiquetas: botones 3D,
botones estndar o pestaas normales.
Hot Tr ack
Propiedad booleana. Indica si la apariencia de la pestaa
cambia al pasar con el ratn sobre el nombre de la pestaa.
RowCount
Nmero de filas de etiquetas en el control.
TabCount
Nmero de etiquetas del control
TabPages
Coleccin de pestaas. Se utiliza para aadir o eliminar
21/48
Marco Besteiro y Miguel Rodrguez Controles Windows

elementos del control.

Adems de lo indicado hasta el momento es importante recalcar que cada pestaa
trabaja como un contenedor de controles como un Gr oupBox- y no como formularios
distintos. Por eso, puede accederse desde un control de una pestaa a otro control de
otra pestaa, cosa que no se puede hacer entre dos formularios diferentes. Sin embargo,
lo ms habitual ser situar este control en una caja de dilogo y pasar los datos que se
hayan seleccionado al formulario.

Ejemplo: trabajando con el control TabControl.

Esta aplicacin figura 16.10 simula la configuracin de la impresin. En este
ejemplo, slo se intenta que la configuracin elegida se presente en los controles de
texto de la parte derecha de la ventana y no configura la impresin.

a) Cree un nuevo proyecto que se llame Pr oyect oTabCont r ol
b) Modifique las propiedades del formulario:
Name: f or mOpci ones
Text : Opci ones de conf i gur aci n

Modifique la lnea del mtodo Mai n( )
Appl i cat i on. Run( new For m1( ) ) ;
por la lnea
Appl i cat i on. Run( new For mOpci ones( ) ) ;

Figura 16.10
22/48
Marco Besteiro y Miguel Rodrguez Controles Windows


c) Aada un control TabCont r ol al formulario y modifique su propiedad Name a
t cOpci ones (figura 16.10).
d) Pulse sobre la propiedad TabPages y trabaje con el editor de las pginas del
control para aadir dos pestaas (figura 16.11).



Figura 16.11

Pulse sucesivamente el botn Agr egar cada vez que desee aadir una pestaa. Si se
equivoca siempre puede pulsar el botn El i mi nar y comenzar de nuevo.

Name: t pI mpr i mi r
Text : I mpr i mi r

Name: t pOr t ogr af i a
Text : Or t ogr af a

e) Cierre la ventana del editor. A continuacin, desde la ventana de diseo, en la
primera etiqueta vaya aadiendo los controles que se indican situndolos
aproximadamente en posiciones que se aproximen a las de las figuras 16.10 y
16.12:


23/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Figura 16.12

e.1) En la TabPage t pI mpr i mi r , aada los controles siguientes:
Gr oupBox
Name: gr oupBox1
Text : I mpr esor a

En gr oupBox1 site tres etiquetas y un ComboBox con las propiedades:

o Label
Name: l abel 1
Text : Nombr e
Aut osi ze: Tr ue
o Label
Name: l Ti poDeI mpr esor a
Text : Ti po
Aut osi ze: Tr ue
o Label
Name: l abel 3
Text : ( Vac o)
Aut osi ze: Fal se
o ComboBox
Name: cbI mpr esor as
Text : HP Laser J et 1100
I t ems: HP Laser J et 1100
Canon J et BCJ 4000
HP DeskJ et 843C

Gr oupBox

24/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Name: gr oupBox2
Text : I nt er val o de pgi nas

En gr oupBox2 site cuatro Radi oBut t on y un Text Box con las
propiedades:

Radi oBut t on
o Name: r bTodo
o Checked: Tr ue
o Text : Todo
Radi oBut t on
o Name: r bPagi naAct ual
o Checked: Fal se
o Text : Pgi na act ual
Radi oBut t on
o Name: r bPagi nas
o Checked: Fal se
o Text : Pgi nas
Radi oBut t on
o Name: r bSel ecci on
o Checked: Fal se
o Text : Sel ecci n
Text Box
o Name: t xt Sel ecci on
o Text : ( Vac o)







Gr oupBox
Name: gr oupBox3
Text : Copi as
En gr oupBox1 si t e una et i quet a, t r es CheckBox y un
Numer i cUpDown:
o Label
Name: l abel 3
Text : Nmer o de copi as
Aut osi ze: Tr ue
o Numer i cUpDown
Name: nudCopi as
I ncr ement 1
Val ue: 1
Mi ni mum: 1
Maxi mum: 100
o CheckBox
Name: cbDosCar as
Text o: I mpr i mi r por l as dos car as
o CheckBox
Name: cbCol or
Text o: I mpr i mi r en col or
o CheckBox
Name: cbBor r ador
Text o: Cal i dad bor r ador

25/48
Marco Besteiro y Miguel Rodrguez Controles Windows



g) En la otra TabPage, t pOr t ogr af i a, aada nicamente un control
CheckedLi st Box con las propiedades siguientes:
CheckedLi st Box
Name: cl bOr t ogr af i a
I t ems:
(utilice el pequeo editor que aparece al pulsar sobre la propiedad)
Cor r egi r uso acci dent al de bLOQ mYUS
Cor r egi r dos MAyuscul as SEgui das
Poner en mayscul a l a pr i mer a l et r a de una or aci n
Cambi ar l as b por v
No comet er ni nguna f al t a de or t ogr af a
Reempl azar mi ent r as se escr i be
Thr eeDCheckBoxes: Tr ue
CheckOnCl i ck: Tr ue
h) Site fuera del control TabCont r ol , dos etiquetas explicativas de dos cajas de
texto donde se escribir la configuracin seleccionada.

Label
Name: l abel 4
Text : Opci ones de i mpr esi n el egi das
Label
Name: l abel 5
Text : Opci ones de or t ogr af a sel ecci onadas
Text Box
Name: t xt Opci onesI mpr esi on
Text : ( Vac o)
Mul t i l i ne: Tr ue

Text Box
Name: t xt Opci onesOr t ogr af i a
Text : ( Vac o)
Mul t i l i ne: Tr ue



Para actualizar las cajas de texto de la derecha. Se crean tres variables de tipo st r i ng y
se les da unos valores iniciales en el constructor del formulario:

/ / Decl ar aci on de mi embr os de l a Cl ase For mOpci ones
st r i ng nombr eI mpr esor a;
st r i ng i nt er val oPagi nas;
st r i ng opci onesCopi as;
st r i ng nCopi as;
st r i ng st r Or t ogr af i a;

pr i vat e Syst em. Component Model . Cont ai ner component s = nul l ;

publ i c For mOpci ones( )
{
nombr eI mpr esor a=" HP Laser J et 1100" ;
i nt er val oPagi nas=" Todo" ;
opci onesCopi as = " " ;
nCopi as =" 1" ;
st r Or t ogr af i a=" " ;
26/48
Marco Besteiro y Miguel Rodrguez Controles Windows

I ni t i al i zeComponent ( ) ;
}

Cree un mtodo pblico que facilite la actualizacin de la caja de texto
t xt Opci onesI mpr esi on. Este mtodo simplemente devuelve la concatenacin de los
resultados de cada grupo de opciones.

publ i c st r i ng Act ual i zar Opci ones( )
{
r et ur n
( nombr eI mpr esor a+i nt er val oPagi nas+opci onesCopi as+nCopi as) ;
}

En el evento Sel ect edI ndexChanged del ComboBox cbI mpr esor as, escriba el siguiente
cdigo:

pr i vat e voi d cbI mpr esor as_Sel ect edI ndexChanged( obj ect sender ,
Event Ar gs e)
{
nombr eI mpr esor a=cbI mpr esor as. Sel ect edI t em. ToSt r i ng( ) ;
l Ti poDeI mpr esor a. Text =nombr eI mpr esor a;
t xt Opci onesI mpr esi on. Text =Act ual i zar Opci ones( ) ;
}

La primera lnea recoge el tem seleccionado como st r i ng. Despus se escribe la
etiqueta que recoge el resultado de la eleccin y posteriormente se llama al mtodo
Act ual i zar Opci ones( ) para actualizar la caja de texto t xt Opci onesI mpr esi on.

A continuacin se escribe el cdigo del evento CheckedChanged de los Radi oBut t on.
Para ello aada este evento en uno de los controles, con el nombre r b_CheckedChanged
y escriba el siguiente cdigo.

pr i vat e voi d r b_CheckedChanged( obj ect sender , Syst em. Event Ar gs e)
{
i f ( r bTodo. Checked)
i nt er val oPagi nas=" I mpr i mi r Todo" ;
el se i f ( r bPagi naAct ual . Checked)
i nt er val oPagi nas=" I mpr i mi r pgi na act ual " ;
el se i f ( r bPagi nas. Checked)
i nt er val oPagi nas=" I mpr i mi r pagi nas: " + t xt Sel ecci on. Text ;
el se i f ( r bSel ecci on. Checked)
i nt er val oPagi nas=" I mpr i mi r sel ecci n" ;
t xt Opci onesI mpr esi on. Text =Act ual i zar Opci ones( ) ;
}

Posteriormente, aada este mismo evento a los otros tres controles Radi oBut t on, para
que todos estn tratados por el mismo mtodo manipulador.


Tambin se pretende que cuando se escriba algo en la caja de texto t xt Sel ecci on, se
seleccione el Radi oBut t on correspondiente, r bPagi nas. Para ello, escriba el siguiente
cdigo en el evento Text Changed del Text Box:

pr i vat e voi d t xt Sel ecci on_Text Changed( obj ect sender , Syst em. Event Ar gs
e)
27/48
Marco Besteiro y Miguel Rodrguez Controles Windows

{
i f ( t xt Sel ecci on. Text . Lengt h>0)
r bPagi nas. Checked=t r ue;
i nt er val oPagi nas=" I mpr i mi r pagi nas: " + t xt Sel ecci on. Text ;
t xt Opci onesI mpr esi on. Text =Act ual i zar Opci ones( ) ;
}

Se propone al lector que mejore el programa para que cuando se selcciona otro
ComboBox, se borre el contenido de la caja de texto t xt Sel ecci on.

Ahora seleccione los tres controles CheckBox, y con ellos seleccionados vaya a la
Ventana de propiedades, y en la pestaa correspondiente a eventos, haga doble-click
sobre el evento CheckedChanged con lo que los eventos de los tres sern tratados por el
mismo manipulador cbDosCar as_CheckedChanged. Esta es otra manera de hacer lo que
antes se ha realizado control a control con los Radi oBut t on.

Escriba el siguiente cdigo en el evento:

pr i vat e voi d cbDosCar as_CheckedChanged( obj ect sender , Syst em. Event Ar gs
e)
{
opci onesCopi as=" " ;
i f ( cbDosCar as. Checked)
opci onesCopi as+=" Dos car as " ;
i f ( cbBor r ador . Checked)
opci onesCopi as+=" bor r ador " ;
i f ( cbCol or . Checked)
opci onesCopi as+=" col or " ;
t xt Opci onesI mpr esi on. Text =Act ual i zar Opci ones( ) ;
}

Ahora aada el nmero de copias, del valor obtenido del control Numer i cUpDown. Para
ello, en el evento nudCopi as_Val ueChanged se escribe el siguiente cdigo:

pr i vat e voi d nudCopi as_Val ueChanged( obj ect sender , Syst em. Event Ar gs e)
{
nCopi as=nudCopi as. Val ue. ToSt r i ng( ) ;
t xt Opci onesI mpr esi on. Text =Act ual i zar Opci ones( ) ;
}

Ahora ya slo queda tratar el control situado en la otra pestaa. Se tartar el evento
Sel ect edI ndexChanged que ocurre siempre que se cambia algunos de los elementos
seleccionados. Para ello, se borra la variable st r Or t ogr af i a, y se recorre la coleccin
de todos los elementos seleccionados. Se obtiene el tem correspondiente y se almacena
en la variable. Por ltimo, se asigna a la caja de texto el contenido de la variable.

pr i vat e voi d cl bOr t ogr af a_Sel ect edI ndexChanged( obj ect sender ,
Syst em. Event Ar gs
e)
{
st r Or t ogr af i a=" " ;
f or each( st r i ng i t emi n cl bOr t ogr af a. CheckedI t ems)
st r Or t ogr af i a+=i t em;
t xt Opci onesOr t ogr af i a. Text =st r Or t ogr af i a;
}
28/48
Marco Besteiro y Miguel Rodrguez Controles Windows


La clase TrackBar

El control Tr ackBar -tambin llamado "slider"- se utiliza para navegar a travs de una
gran cantidad de informacin y/o para ajustar visualmente un determinado valor. Consta
de dos partes: una es el propio slider o marcador y las propias marcas. El slider puede
ser ajustado a un determinado valor y su posicin corresponde a ese valor que se asigna
a la propiedad Val ue. El marcador se mueve en incrementos que se pueden especificar.

Las propiedades ms importantes de este control son: Val ue, Ti ckFr equency, Mi ni mum,
y Maxi mum. Ti ckFr equency es el espaciamiento entre las marcas. Mi ni mumy Maxi mum
son los valores mnimo y mximo que puede representar el control.
Tambin tienen importancia las propiedades Smal l Change y Lar geChange, que
representan el nmero de posiciones que se mover el marcador en respuesta a pulsar
las teclas izquierda o derecha y PAGE UP o PAGE DOWN -y tambin a un click de ratn en
el propio control- respectivamente.
Esta clase deriva directamente de la clase Cont r ol .
Propiedades
Aut oSi ze
Define si el control se ajusta en tamao
automticamente.
Lar geChange
Valor que se aade o resta a la propiedad
Val ue cuando se mueve el slider por un
click de ratn o con las teclas AV PAG o
RE PAG.
Maxi mum
Lmite superior de la propiedad Val ue.
Mi ni mum
Lmite inferior de la propiedad Val ue.
Or i ent at i on
Orientacin del Tr ackBar
Smal l Change
Valor que se aade o resta a la propiedad
Val ue cuando se mueve el slider desde el
teclado con las teclas izquierda o derecha..
Ti ckFr equency
Es el incremento de valor entre las
pequeas marcas dibujadas en el control.
Ti ckSt yl e
Indica el modo de visualizacin del control.
Val ue
Es el valor numrico que representa la
posicin actual del slider.
Eventos
Scr ol l
Ocurre cuando el slider se mueve por
accion del ratn o por el teclado.
Val ueChanged
Ocurre cuando la propiedad Val ue cambia.


29/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Ejemplo: trabajando con el control TrackBar.

En la siguiente aplicacin las cajas de texto actualizan los valores de los Tr ackBar en
cada momento.

a) Cree un nuevo proyecto denominado
Bar r asDeDespl azami ent o.
b) Cambie el nombre del fichero For m1. cs a
For mul ar i oPr i nci pal . cs pulsando en la ventana Explorador de Soluciones
y cambiando la propiedad Name del archivo por el nuevo nombre.
c) Modifique el nombre de la clase For m1 a
For mul ar i oPr i nci pal . Para ello, pulse en la ventana Vista de clases, el tem
For m1 para que tenga el foco, cambie la propiedad Name del formulario de For m1 a
For mul ar i oPr i nci pal .
d) Para ver el cdigo de la aplicacin pulse con el
botn derecho el formulario y escoja la opcin Ver cdigo.
e) Cambie esto es error de la beta- la lnea
Appl i cat i on. Run( new For m1( ) ) ;
por la lnea
Appl i cat i on. Run( new For mul ar i oPr i nci pal ( ) ) ;

f) Establezca la siguiente propiedad del formulario For mul ar i oPr i nci pal

Text : Apl i caci n demo de Bar r as de despl azami ent o

g) Site dos controles Tr ackBar , en el formulario y haga que sean ms o menos del
mismo tamao.

h) A los dos controles Tr ackBar se les asignan las siguientes propiedades:
Name: t h y t v respectivamente, indicando que son dos Tr ackBar , uno
horizontal y otro vertical.
Or i ent at i on: Hor i zont al y Ver t i cal respectivamente. Definen la
orientacin.
Maxi mun: 100 Valor mximo del track.
Mi ni mum: 0 Valor mnimo del track.
Lar geChanged: 5 Incrementos grandes de valor.
Smal l Changed: 1 Incrementos de valor.
Val ue: 0 Indica el valor actual del track. Inicialmente, valor 0.
Ti ckFr ecuency: 5 Frecuencia de las seales dibujadas en el track.
Ti ckSt yl e: Bot t omRi ght Estilo de la seal que indica el valor.

i) Aada cajas de texto, del mismo tamao, con las siguientes propiedades:
Name: t xt Val or Bar r aHor i zont al y t xt Val or Bar r aVer t i cal
respectivamente.
Text : 0
j) Aada dos etiquetas con las siguientes propiedades:
Aut oSi ze: Tr ue
Text : Val or Bar r a Hor i zont al y Val or Bar r a Ver t i cal ,
respectivamente
30/48
Marco Besteiro y Miguel Rodrguez Controles Windows

k) El aspecto final de la aplicacin es el de la figura 16.14:
Se puede ajustar los mrgenes, tamaos y posiciones relativas con los controles
situados en la barra de herramientas del IDE (figura 16.13) y con Crtl+flechas
de posicionamiento



Figura 16.13



Figura 16.14

l) Se pretende que cuando cambie el indicador de posicin se indique su valor en
los cuadros de texto. Para ello,
Pulse sobre la barra vertical para tener el foco.
En la ventana de propiedades, doble click sobre el evento
Val ueChanged del Tr ackBar
Escriba el siguiente cdigo:

t xt Val or Bar r aHor i zont al . Text = t h. Val ue. ToSt r i ng( ) ;

y en otro control,

t xt Val or Bar r aVer t i cal . Text = t v. Val ue. ToSt r i ng( ) ;

De esta manera se asigna a la propiedad Text de las cajas de texto los valores de los
controles t r ackBar cada vez que stos cambien. Observe el lector que se utiliza el
31/48
Marco Besteiro y Miguel Rodrguez Controles Windows

mtodo ToSt r i ng( ) que tiene cualquier objeto por heredarlo de la clase Obj ect para
convertir la cantidad que se obtiene de los t r ackBar a st r i ng.

Compile y ejecute la aplicacin.

Se puede observar que esta aplicacin queda un poco incompleta porque lo lgico sera
que si el usuario cambia el valor de las cajas de texto, tambin cambiaran los valores en
los Tr ackBar . Adems sera conveniente controlar la entrada de la caja de texto para
que sea numrica. No se ha hecho aqu para no complicar demasiado el cdigo. Sin
embargo, se realiza un ejemplo muy parecido al explicar la clase Scr ol l Bar .

La clase ScrollBar
Muchos de los controles que precisan de barras de desplazamiento ya las proporcionan
directamente. Esto sucede con los controles Text Box, Li st Box y ComboBox.
Este control se utiliza en aqullos controles que no lo proporcionan directamente, como,
por ejemplo, Pi ct ur eBox.

La jerarqua de esta clase es la siguiente:

Cont r ol



HScr ol l Bar VScr ol l Bar
Scr ol l Bar


Figura 16.15
Propiedades
La propiedad principal es Val ue, que es el valor actual en la barra de desplazamiento.
Adems son tambin importantes las propiedades Mi ni mumy Maxi mumque determinan
el rango de los valores que el usuario puede seleccionar, Lar geChange y Smal l Change
que definen el incremento cuando se produce incrementos grandes por pulsacin del
ratn en el control- y pequeos al pulsar en los extremos del control-.
Eventos
Scr ol l
Ocurre cuando se mueve la barra de desplazamiento. Es el evento
por defecto.
Val ueChanged
Ocurre cuando cambia el valor de la propiedad Val ue.
32/48
Marco Besteiro y Miguel Rodrguez Controles Windows


Ejemplo: trabajando con el control ScrollBar.

En esta aplicacin se define el color de fondo de un panel a travs de los valores
numricos correspondientes a las barras de desplazamiento (16.16).

Figura 16.16

Para ello cree un nuevo proyecto llamado Di al ogoCol or y en el formulario principal
sita los controles como aparecen en la figura 16.16.

Asigne las siguientes propiedades:

-Formulario:

Name: For mul ar i oCol or
Text : For mul ar i o de Col or
For mBor der St yl e: Fi xedDi al og

Cambiar tambin (slo en la versin beta) la lnea de mtodo Mai n( ) :

Appl i cat i on. Run( new For m1( ) ) ;

por la lnea:

33/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Appl i cat i on. Run( new For mul ar i oCol or ( ) ) ;

Aada un panel, tres etiquetas, tres cajas de texto y tres barras de desplazamiento con la
situacin de la figura anterior y con las propiedades siguientes:

-panel:
Name: panel
BackCol or : Bl ack

-Etiquetas:
Name: los que vienen por defecto, o sea, l abel 1, l abel 2 y l abel 3.
Aut osi ze: t r ue

-Cajas de texto:
Name: t xt Roj o, t xt Ver de y t xt Azul respectivamente.
Text : 0 (en las tres)

-Barras de desplazamiento (Scr ol l Bar )
Name: scbRoj o, scbVer de y scbAzul .
Lar geChanged: 10
Maxi mun: 255
Mi ni mun: 0
Smal l Changed: 1
Val ue: 0


A continuacin llame al evento Val ueChanged de scbRoj o y llmele
scb_Val ueChanged. Las tres barras de desplazamiento compartirn el mismo mtodo y
cdigo. Escriba el siguiente cdigo:

pr i vat e voi d scb_Val ueChanged( obj ect sender , Syst em. Event Ar gs e)
{
/ / Se r ecogen l os val or es de l as bar r as de despl azami ent o
i nt nRoj o=scbRoj o. Val ue;
i nt nVer de=scbVer de. Val ue;
i nt nAzul =scbAzul . Val ue;

/ / Se asi gnan l os val or es a l as caj as de t ext o
t xt Roj o. Text =nRoj o. ToSt r i ng( ) ;
t xt Ver de. Text =nVer de. ToSt r i ng( ) ;
t xt Azul . Text =nAzul . ToSt r i ng( ) ;

/ / Se cr ea el col or y se asi gna al f ondo del panel
Col or mi Col or =Col or . Fr omAr gb( nRoj o, nVer de, nAzul ) ;
panel . BackCol or =mi Col or ;
}

En el cdigo anterior, en primer lugar se obtienen los valores de cada una de las barras
de desplazamiento y se asignan a tres variables enteras. Posteriormente, se asignan estos
valores a las cajas de texto, para que haya una correspondencia entre los valores de las
barras y las cantidades de las cajas de texto.

A continuacin, en la lnea:

Col or mi Col or =Col or . Fr omAr gb( nRoj o, nVer de, nAzul ) ;
34/48
Marco Besteiro y Miguel Rodrguez Controles Windows


se asigna al objeto mi Col or de la estructura Col or , un color con el mtodo esttico
Fr omAr gb( ) que devuelve un objeto de tipo Col or formado por la mezcla de los
colores rojo, verde y azul en cantidades que vienen indicadas en cada uno de los tres
argumentos con cantidades comprendidas entre 0 y 255. La estructura Col or se trata en
el captulo dedicado al GDI.

El formato de este mtodo es:

publ i c st at i c Col or Fr omAr gb( i nt r oj o, i nt ver de, i nt azul ) ;

Posteriormente, este color se asigna a la propiedad BackCol or de panel .

Hay que considerar que este cdigo sirve para los tres controles. Para esto, debe
asociarse este mismo evento de nombre scb_Val ueChanged a los controles scbVer de y
scbAzul . Tambin se deben definir los eventos Val ueChanged de las otras dos cajas de
desplazamiento. Para ello, se debe hacer click en la ventana de propiedades del control
scbVer de, en el evento Val ueChanged; pulse en la parte de la derecha; sobre la flecha
situada al final de la lnea del evento aparece el nombre scb_Val ueChanged. Pulse
sobre l y de modo automtico se asocia este mismo evento al control scbVer de.
Realice la misma operacin con el control scbAzul .

Ahora hay que considerar el paso inverso. Se trata de que cuando se cambien las
cantidades de las cajas de texto, se modifiquen automticamente y se siten en los
valores correspondientes las barras de desplazamiento y se asocie el color
correspondiente a estas cantidades al panel.

En este ejercicio no se van a considerar los posibles errores en la introduccin de
valores en las cajas de texto, para no complicar excesivamente el ejercicio.

Adems, se considerar que no se cambie el color hasta que no se pulse ENTER. Por
eso, se trata el evento KeyPr ess.

Como las tres cajas de texto tienen el mismo cdigo, se compartirn el mismo nombre
para las tres como se ha hecho anteriormente. Se sigue el mismo camino anterior:
doble click sobre el evento KeyPr ess de uno de las tres cajas de texto por ejemplo la
primera y de modo automtico se asocia el nombre t xt Roj o_KeyPr ess al control, ya
que ste es el control por defecto de este control. Vuelva a la ventana de propiedades, y
cambie el nombre por uno un poco ms general, como por ejemplo, t xt _KeyPr ess o
cualquier otro.

Escriba el siguiente cdigo en la primera de las cajas de texto.

pr i vat e voi d t xt _KeyPr ess( obj ect sender , KeyPr essEvent Ar gs e)
{
/ / Aqu se deber a cont r ol ar que l a ent r ada sea numr i ca
i nt n=i nt . Par se( ( ( Text Box) sender ) . Text ) ;
i f ( n<=255 && n>=0)
{
i f ( e. KeyChar ==' \ r ' )
{
i nt nRoj o=i nt . Par se( t xt Roj o. Text ) ;
35/48
Marco Besteiro y Miguel Rodrguez Controles Windows

i nt nVer de=i nt . Par se( t xt Ver de. Text ) ;
i nt nAzul =i nt . Par se( t xt Azul . Text ) ;

scbRoj o. Val ue=nRoj o;
scbVer de. Val ue=nVer de;
scbAzul . Val ue=nAzul ;
Col or mi Col or =Col or . Fr omAr gb( nRoj o, nVer de, nAzul ) ;
panel . BackCol or =mi Col or ;
}
}
el se
MessageBox. Show( " I nt r oduce un nmer o ent r e 0 y 255" ) ;
}

Observaciones:

a) En la lnea
i nt . Par se( t xt Roj o. Text ) ;
se convierte la cantidad correspondiente a la caja de texto que es un st r i ng- a
un entero.
b) Se chequea si el nmero introducido est entre 0 y 255
c) En la lnea i f ( e. KeyChar ==' \ r ' ) se chequea si la tecla pulsada es un ENTER,
que corresponde al carcter \ r .
d) Se actualizan los valores de las barras con las cantidades correspondientes de las
cajas de texto

La clase PictureBox
Un Pi ct ur eBox se utiliza para visualizar grficos: bitmaps, iconos, ficheros J PEG, GIF
u otros tipos de archivos.
Esta clase deriva directamente de la clase Cont r ol .
Su propiedad I mage define la imagen que se visualiza. El tamao y posicionamiento de
la imagen en el control se pueden controlar por medio de la propiedad Si zeMode que
puede tomar valores de la enumeracin Pi ct ur eBoxSi zeMode. El control Pi ct ur eBox
se visualiza por defecto sin bordes, pero se puede modificar con la propiedad
Bor der St yl e.
Propiedades
Bor der St yl e
Define el borde del control. Puede ser None, Fi xedSi mpl e y
Fi xed3D.
I mage
La imagen que se visualiza en el control.
Si zeMode
Modo de posicionamiento y visualizacin de la imagen. A
continuacin se muestran los valores que puede tomar.
Nota: Valores de la enumeracin Pi ct ur eBoxSi zeMode:
Aut oSi ze
El tamao del control se modifica hasta ajustarse al de la imagen.
Cent er I mage
Si la imagen es ms grande que el control se visualiza en el centro
36/48
Marco Besteiro y Miguel Rodrguez Controles Windows

de la imagen. En el caso contrario, se visualiza en el centro del
control.
Nor mal
La imagen se sita en la esquina superior izquierda del control. Si
la imagen es ms grande que el control, no se visualiza entera.
St r et chI mage
Se modifica el tamao de la imagen para que se ajuste al control.

Ejemplo: trabajando con barras de desplazamiento y con el control
PictureBox.
Esta aplicacin lee una imagen al hacer doble click sobre el formulario y cuando se
cambia el tamao del formulario se refresca la imagen. Es posible que no se entiendan
bien algunas de las lneas de cdigo, en concreto las que se refieren a la carga de la
imagen. Se explicarn en detalle ms adelante.

Cree un nuevo proyecto denominado Pr oyect oScr ol l Bar con un control Pi ct ur eBox
de nombre caj aI magen y con su propiedad Dock a Fi l l para que ocupe todo el
formulario y dos barras de desplazamiento VScr ol l Bar y HScr ol l Bar , de nombres
sbHor y sbVer y con sus propiedades Dock a Lef t y Bot t omrespectivamente. Aada un
control openFi l eDi al og al formulario y cambie su propiedad Name a dl gAbr i r .


Figura 16.17
Al hacer doble click sobre el control Pi ct ur eBox se carga una imagen. Para ello,
escriba el siguiente cdigo en el evento Doubl eCl i ck del Pi ct ur eBox
pr i vat e voi d caj aI magen_Doubl eCl i ck( obj ect sender , Syst em. Event Ar gs e)
{
/ / Di al ogo par a abr i r un f i cher o
i f ( dl gAbr i r . ShowDi al og( ) ! = Di al ogResul t . Cancel )
{
37/48
Marco Besteiro y Miguel Rodrguez Controles Windows

/ / Abr e l a i magen en el Pi ct ur eBox y l a pr esent a
caj aI magen. I mage = I mage. Fr omFi l e( dl gAbr i r . Fi l eName) ;
magen
i s. Pr esent aEl Scr ol l Bar ( ) ;
}

fresque la imagen.
Para ello, escriba el cdigo siguiente en el evento Resi ze For m1
vat e voi d caj aI magen_Resi ze( obj ect sender , Syst em. Event Ar gs e)
i magen, ver l a si necesi t a scr ol l bar s
ar ( ) ;
i s. Ref r esh( ) ;
}
}

azamiento y se trata el evento Scr ol l de las barras. Ambas tienen el mismo
evento.
vat e voi d sbVer _Scr ol l ( obj ect sender , Scr ol l Event Ar gs e)
a par t e
ht ,

}

) se encarga de presentar las barras de
desplazamiento cuando sea necesario.

l i c voi d Pr esent aEl Scr ol l Bar ( )
mage. Wi dt h)
. Vi si bl e = f al se;
/ / Aade cdi go par a " aj ust ar " l a i
t h
}

Se desea tambin que cuando cambie el tamao del formulario, se re
de .
pr i
{
/ * Si el Pi ct ur eBox t i ene
y r ef r escar l a i magen*/
i f ( caj aI magen. I mage ! = nul l )
{
t hi s. Pr esent aEl Scr ol l B
t h

Adems, cuando la imagen sea ms pequea que el formulario, se presentan las barras
de despl
pr i
{
/ * Cr ea un obj et o Gr aphi cs y di buj a un
de l a i magen en el Pi ct ur eBox. */
s( ) ; Gr aphi cs g = caj aI magen. Cr eat eGr aphi c
g. Dr awI mage( caj aI magen. I mage,
new Rect angl e( 0, 0, caj aI magen. Wi dt h - sbHor . Hei g
caj aI magen. Hei ght - sbVer . Wi dt h) ,
new Rect angl e ( sbHor . Val ue, sbVer . Val ue,
caj aI magen. Wi dt h- sbHor . Hei ght ,
caj aI magen. Hei ght - sbVer . Wi dt h) , Gr aphi csUni t . Pi xel ) ;

El mtodo Pr esent aEl Scr ol l Bar (
pub
{
l l Bar / / / Si l a i magen es ms ancha, pr esent a el HScr o
i f ( caj aI magen. Wi dt h > caj aI magen. I
sbHor
38/48
Marco Besteiro y Miguel Rodrguez Controles Windows

el se
sbHor . Vi si bl e = t r ue;
/ / Si l a i magen es ms al t a, pr esent a el VScr ol l Bar
I mage. Hei ght )
sbVer . Vi si bl e = t r ue;

ado intervalo de tiempo. No deriva de la
lase Cont r ol , sino de la clase Component .

Enabl ed
e puede conseguir el mismo efecto con los mtodos
ntervalo de tiempo en que se producirn los
disparos o eventos de reloj.

Mtodos
t op( )
todo puede seer sobreescrito para una clase que derive de
Ti mer

de reloj se denomina el intervalo de reloj
dicado.

Ejemplo: trabajando con el control
icar que es un control no visual- y cambie las siguientes propiedades del
ontrol:
( i nt er val o de dci mas de segundo)
i f ( caj aI magen. Hei ght > caj aI magen.
. Vi si bl e = f al se; sbVer
el se

}
La clase Timer

Permite que ocurra un evento cada determin
c
Propiedades

Propiedad booleana que habilita o deshabilita el lanzamiento de los
eventos de reloj. S
St ar ( ) y St op( ) .
Indica, en milisegundos, el i
I nt er val

St ar ( ) y S
OnTi ck( )
Habilitan y deshabilitan el reloj
Este m
.
Eventos

El evento Ti ck. Ocurre cuando transcurre
in
Timer.
Esta aplicacin implementa un cronmetro muy simple .
Para ello, cree un nuevo proyecto para Windows. Aada a su formulario principal un
control de la clase Ti mer se situar en la parte inferior del IDE, fuera del formulario,
para ind
c

Name: r el oj
I nt er val : 100
39/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Enabl ed: t r ue
ada una etiqueta al formulario y cambie las propiedades siguientes:
undos
ext : 0
ondern a las dcimas,
gundos, minutos y horas, como miembros de las clase
at i c i nt dd=0;
l aspecto final de la aplicacin ser, ms o menos el de la figura 16.18:


A

Name: seg
T

Defina cuatro variables estticas, inicializadas a 0, que corresp
For m1: se

st at i c i nt hh=0;
st at i c i nt mm=0;
st at i c i nt ss=0;
st

E

Figura 16.18
continuacin, escriba el siguiente cdigo en el evento Ti ck loj:
o de r el oj , suma una dci ma
o a 10 dci mas
0)
dci mas a cer o y sumar un segundo
o a 60 segundos
0)
ndos a cer o y sumar un mi nut o
o a 60 mi nut os
0)
cer o, y sumar una hor a

del re A


vat e voi d r el oj _Ti ck( obj ect sender , Syst em. Event Ar gs e) pr i
{
/ / Cada event
dd++;
/ / Si se ha l l egad
i f ( dd==1
{
/ / poner l as
dd=0;
ss++;
/ / Si se ha l l egad
i f ( ss==6
{
/ / Poner segu
ss=0;
mm++;
/ / Si se ha l l egad
i f ( mm==6
{
/ / mi nut os a
40/48
Marco Besteiro y Miguel Rodrguez Controles Windows

mm=0;
hh++;
hor a. Text = hh. ToS
Compile y ejecute la aplicacin.
}
}
}
/ / Escr i bi r l a hor a en el f or mat o: hh: mm: ss: dd
t r i ng( ) + " : " + mm. ToSt r i ng( ) + " : "
+ ss. ToSt r i ng( ) + " : " + dd. ToSt r i ng( ) ;
}
41/48
Marco Besteiro y Miguel Rodrguez Controles Windows

La clase DateTime

Esta clase no es un control pero es indispensable para trabajar con los dos controles que
se van a estudiar a continuacin. Un objeto de la clase Dat eTi me encapsula informacin
del da y la hora.
Propiedades
Dat e
Es de tipo Dat eTi me. Obtiene la fecha actual.
Day
Es de tipo entero. Obtiene el da del mes.
DayOf Week
Da de la semana.
DayOf Year
Da del ao.
Hour
Hora.
Mi l l i second
Milisegundos
Mi nut e
Minutos.
Mont h
Mes.
Second
Segundos.
Ti cks
Nmero de veces que han pasado intervalos de 100
nanosegundos.
Ti meOf Day
Hora dentro del da.
Year
Ao.

Propiedades estticas:

MaxVal ue
Constante que representa el valor ms grande posible que puede
tomar el objeto Dat eTi me.
Mi nVal ue
Constante que representa el valor ms pequeo posible que puede
tomar el objeto Dat eTi me
Now
Objeto Dat eTi me que encapsula la hora actual del ordenador.
Today
Objeto Dat eTi me con la fecha actual.



Mtodos
ToLongDat eSt r i ng( ) , ToLongTi meSt r i ng( ) ,
ToShor t Dat eSt r i ng( ) , ToShor t Dat eSt r i ng( ) ,
ToShor t Ti meSt r i ng( ) , ToSt r i ng( )
Convierten la fecha o la hora a
distintos formatos de cadena.

Mtodos estticos:

DaysI nMont h
Nmero de das de un determinado mes de un ao concreto.


Ejemplo: trabajando con la clase DateTime.
42/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Esta aplicacin presenta en pantalla los distintos formatos de esta clase. Para ello, se
asignan a la propiedad Text de cada una de las diez cajas de texto un formato de la
fecha u hora distintos (figura 16.19). Previamente, se crea un objeto de la clase
Dat eTi me:

publ i c For m1( )
{
I ni t i al i zeComponent ( ) ;

/ / Se cr ea un obj et o de t i po Dat eTi me con el d a y hor a act ual
Dat eTi me ahor a=Dat eTi me. Now;

/ / Se pr esent a en pant al l a en 10 caj as de t ext o
t ext Box1. Text =ahor a. Dat e. ToSt r i ng( ) ;
t ext Box2. Text =ahor a. ToSt r i ng( ) ;
t ext Box3. Text =ahor a. ToLongDat eSt r i ng( ) ;
t ext Box4. Text =ahor a. ToLongTi meSt r i ng( ) ;
t ext Box5. Text =ahor a. ToShor t Dat eSt r i ng( ) ;
t ext Box6. Text =ahor a. ToShor t Ti meSt r i ng( ) ;
t ext Box7. Text =ahor a. Day. ToSt r i ng( ) ;
t ext Box8. Text =ahor a. Mont h. ToSt r i ng( ) ;
t ext Box9. Text =ahor a. Year . ToSt r i ng( ) ;
t ext Box10. Text =ahor a. Hour . ToSt r i ng( ) ;
}



Figura 16.19

43/48
Marco Besteiro y Miguel Rodrguez Controles Windows

La clase DateTimePicker

Se utiliza para seleccionar una determinada fecha, de manera grfica. Esta clase deriva
directamente de la clase Cont r ol . Es un control mezcla de un control ComboBox que
contiene una determinada fecha y un calendario que se estudiar posteriormente-
(figura 16.20).


Figura 16.20
C#permite trabajar de una manera muy flexible con los formatos de fecha y hora. La
propiedad Cust omFor mat permite definir el formato de la presentacin en el control. Se
debe encerrar entre comillas simples las letras reservadas de esta propiedad que son d
(da) m(mes) y(ao) h( horas) m(minutos) s(segundos) as como : y / . Para que tenga
validez el formato, el valor de la propiedad For mat debe ser Cust om. Por ejemplo, para
presentar en pantalla di a 06/ 01/ 2001 a l as 11: 34 basta con poner la propiedad
Cust omFor mat el st r i ng: ' d' i a dd' / ' mm' / ' yyyy a l a' s' hh' : ' mm.
Para ms informacin, vase la ayuda: Date and Time Format Strings.
Propiedades
Cal endar Font
Cal endar For eCol or
Cal endar Mont hBackgr ound
Cal endar Ti t l eBackCol or
Cal endar Ti t l eFor eCol or
Cal endar Tr ai l i ngFor eCol or
Propiedades para el diseo grfico del control.
Con ellas se puede definir el tipo de letra y su
color, as como el color de fondo del control y
del calendario que se despliega.
Checked
Cuando la propiedad ShowCheckBox es t r ue
indica el estado del control CheckBox adjunto a
la fecha
Cust omFor mat
Define el formato personalizado de la fecha y/o
la hora.
44/48
Marco Besteiro y Miguel Rodrguez Controles Windows

Dr opDownAl i gn
Indica si la lista que se despliega estar alineada
a la izquierda o a la derecha.
For mat
Indica el formato de la hora. Si se desea un
formato personalizado, debe elegirse el valor
Cust omy debe definirse dicho formato en la
propiedad Cust omFor mat ,
MaxDat e
Mi nDat e
Define las fechas lmites que se pueden
seleccionar en este control.
ShowCheckBox
Valor booleano que indica si se adjunta o no un
control CheckBox en el control.
ShowUpDown
Indica si se utiliza un control up-down para
selecionar la fecha o un ComboBox que
despliegue un calendario.
Val ue
Es el valor fecha y hora asignado al control.
Eventos
Cl oseUp
Ocurre cuando se cierra el calendario asociado al control.
Dr opDown
Ocurre cuando se despliega el calendario asociado al control.
Val ueChanged
Ocurre cuando cambia la propiedad Val ue, es decir, cuando se
selecciona un fecha diferente a la actual. Es el evento por defecto
del control.



45/48
Marco Besteiro y Miguel Rodrguez Controles Windows

La clase MonthCalendar

Esta clase tambin deriva directamente de la clase Cont r ol . El control correspondiente
a la clase Mont hCal endar permite seleccionar una fecha o un rango de das de manera
visual. Mediante las propiedades Mi nDat e y MaxDat e se puede limitar el abanico de
fechas a elegir.
Es posible modificar el aspecto grfico del calendario cambiando los valores de las
propiedades For eCol or , Ti t l eBackCol or , Ti t l eFor eCol or , Tr ai l i ngFor eCol or y
BackCol or .
Muchas veces es ms sencillo utilizar un control Dat eTi mePi cker en lugar de
Mont hCal endar si no se pretende trabajar con un rango de das.
Propiedades
Dat eTi me[ ] Bol dedDat es
Es el array de objetos de tipo Dat eTi me
que determina los das sealados en
negrita.
Cal endar Di mensi ons
El nmero de filas y de columnas que
tiene el control.
Day Fi r st DayOf Week
Define el primer da de la semana. Por
defecto es Day. Def aul t
Dat eTi me MaxDat e
El da ms lejano del futuro que es posible
seleccionar.
i nt MaxSel ect i onCount
El mximo nmero de das que es posible
seleccionar. Por defecto es 7.
Dat eTi me Mi nDat e
El da ms lejano del pasado que es
posible seleccionar.
Dat eTi me[ ] Mont hl yBol dedDat es
i nt Scr ol l Change
Cambio de meses al hacer un scroll en el
control.
Dat eTi me Sel ect i onEnd
Es el da final del rango de das
seleccionado.
Sel ect i onRange Sel ect i onRange
Devuelve un objeto de la clase
Sel ect i onRange. Esta clase representa el
rango de das seleccionado. Tiene dos
propiedades: St ar t y End, que son dos
objetos de la clase Dat eTi me, que indican
la fecha de comienzo y la de final del
rango. Si slo se selecciona un da St ar t
y End son iguales.
Dat eTi me Sel ect i onSt ar t
Define la fecha de comienzo en la
seleccin de un rango de das.
bool ean ShowToday
Indica si la fecha representada en la
propiedad TodayDat e se presenta en la
parte inferior del control.
bool ean ShowTodayCi r cl e
Indica si se rodea con un pequeo crculo
la fecha actual.
bool ean ShowWeekNumber s
Indica si se presenta o no en el control el
46/48
Marco Besteiro y Miguel Rodrguez Controles Windows

nmero de semana relativo al ao.
Col or Ti t l eBackCol or
Color de fondo del area del ttulo del
control.
Col or Ti t l eFor eCol or
Color de la letra del ttulo del control.
Dat eTi me TodayDat e
Es el valor que utiliza el control como
fecha actual.
Col or Tr ai l i ngFor eCol or
Color de los nmeros de los das que no
pertenecen al mes del ttulo del control.
Mtodos
voi d Set Dat e( Dat eTi me dat e)

Define la fecha actual.
voi d Set Sel ect i onRange ( Dat eTi me d1, Dat eTi me
d2)

Define las fechas
seleccionadas.

Ejemplo: trabajando con los controles DateTimerPicker y MonthCalendar.

En esta aplicacin se actualiza el texto de una etiqueta con una fecha elegida en un
control Dat eTi mer Pi cker o en un control Mont hCal endar y se actualiza la fecha del
otro control (Figura 16.21).



Figura 16.21

Cree un nuevo proyecto, y llmele Pr oyect oCal endar i o.

Aada un control Dat eTi mer Pi cker y un control Mont hCal endar con sus propiedad
Name dt pFecha y mcCal endar i o respectivamente. J uegue un poco con las
47/48
Marco Besteiro y Miguel Rodrguez Controles Windows

propiedades que definen el look de los controles hasta dejar la apariencia que se
desee. Aada tambin una etiqueta con la propiedad Name et i quet a, y su propiedad
Text vaca.

Se debe imprimir en la etiqueta la fecha sin incluir el ao: por ejemplo, imagnese que
est definiendo cumpleaos para una agenda. Para ello, implemente los eventos
Val ueChanged y Dat eChanged de los controles Dat eTi mer Pi cker y Mont hCal endar
respectivamente con el siguiente cdigo:

pr i vat e voi d dt pFecha_Val ueChanged( obj ect sender , Event Ar gs e)
{
Dat eTi me hoy = dt pFecha. Val ue;
mcCal endar i o. Sel ect i onSt ar t =mcCal endar i o. Sel ect i onEnd=hoy;
et i quet a. Text =" Cumpl eaos de Mi r i am: " + hoy. Day + " / " +
hoy. Mont h;
}

pr i vat e voi d mcCal endar i o_Dat eChanged( obj ect sender , Dat eRangeEvent Ar gs
e)
{
Dat eTi me hoy = mcCal endar i o. Sel ect i onSt ar t ;
dt pFecha. Val ue = hoy;
et i quet a. Text =" Cumpl eaos de Mi r i am: " + hoy. Day + " / " +
hoy. Mont h;
}

Compile y ejecute la aplicacin


48/48

También podría gustarte