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; }