Está en la página 1de 26
~ Curso tedrico y practico de programacion Desarrollador Con toda la potencia G aa} | de Visual Basic .NET y C# i! - La mejor forma de aprender oy fe, a programar desde cero Baiada enol programe Desarrollador Cinco Estrellas de Microsoft Enlace de datos ADO.NET - El objeto BindingSource Distribucion de aplicacion XCOPY - Windows Installer - ClickOnce g N°1 DE =n ers Wea eee Rea “heed eed a PAU Mai bir MT ND a OHO HA ° aS UL aC Te USS p51) NOE sens i A Seguinos en: € redusers.com (srcscs-" g : www,youtube.com/redusersvideos. Disefio de interfaz de usuario Todas las claves, técnicas y secretos para hacer que nuestra aplicacién sea sencilla y facil de utilizar. El disefio de la interfaz de usuario es de fun- damental importancia en el uso de una apliea- cin. Qué significa esto? Bueno, si los progra- ‘mas que usamos habitualmente estuvieran des- organizados, con los botones siempre en dis- tinto lugar, con colores poco consistentes, con textos poco claros, se nos haria més dificil aprender a usarlos. ‘Tomemos cualquier pro- gtama de los que tenemos instalados en nues- tra computadora, Si observamos un poco, ve- remos que, por ejemplo, en las ventanas que ticnen botones Aceptar y Cancelar, éstos siem- pre se enenentran en Ia misma ubicacién y acomodados del mismo modo (en general, en Ia parte inferior derecha, con Aceptat més a la inquierda y Cancelar a su derecha). De este modo, cuando nos empezamos a acostumbras, usamos la aplicacién casi “de memoria”, ya que sabemos que si queremos anular Ia accién actual, debemos hacer clic en el botén que es- ta en la esquina inferior derecha, y estaremos seguros de ése es Cancelat Como progeamadores, siempre debemos tratar de imitar estas buenas pricticas de disefio de interfaces, Para hacerlo, Visual Studio nos pro- porciona un conjunto de herramientas visua- les, propiedades y controles que nos permiten generar interfaces estindar y consistentes, Vea- ‘mos las mas importantes. Snaplines www.redu ‘Una de las herramientas mis sencillas, y mas tiles, €6 Sinapline, Las smaplines son lineas que ‘nos permiten alinear los controles unos con Ctros y con respecto a su contenedor, de ma- EI disefio de la interfaz de usuario es de fundamental importancia en el uso de una aplicacion. nera tal que queden bien posicionados en cuanto a sus mérgenes y al alineamiento del texto que se va a ingresar en cada uno de ellos (ies aplicable). Histas lineas se dibujan auto- maticamente en el disefiador de formulatios al momento de posicionar el control y arrastrarlo dentro de él, Ein Windows Forms NET 2.0 todos los controles tienen una propiedad Margin, que es la distancia que existe alrede- dor del control Cuando dos controles se mueven uno cerca de otro, y la distancia es igual a la suma de sus mérgenes, se muestra una snapline roja. Fista cs la distancia que recomiendan las guias de di- sefio de interfaces de usuatio. Ademis, los controles contenedores tienen logspot.com.a FIGURA 032 | Las lineas azules nos permiten alinear los controles entre si.La roja es para Ia alineaci6n de los textos respecto a otros controles. 289 tuna nueva propiedad llamada Padding, que es Ja distancia interna desde el borde del control contenedor hasta el del control que se esti ubi- cando dentro de él. Una snapline también se muestra cuando se alcanza esta distancia. Anchor y Docking Asi como las snaplines nos permiten alineat los controles en tiempo de disefio, con anchor y docking podemos fijarlos en tiempo de ejecu- cin, Las propiedades Anchor y Dock de los FIGURA 033 | Docking en accidn.Al eamblar la propiedad Dock de! control, és se pega” al borde seleccionadosen este caso, el superior Microsoft ha publicado un extenso documento De eee cic) Deca GaSe ac ja para Deer Lo n el estandar de Windows. Hay desde reglas Creu eS ue ce ec oR aca Cet rc) eee emia Coen ec ceed 290 Presa controles nos permiten anclar 0 fijar los con- troles en una determinada posicién y permitir su redimensionamiento de manera automitica cuando el contenedor o el formulario cambian de tamano. Por ejemplo, si colocamos un con- trol TextBox, tal que su borde derecho quede junto al borde derecho del formulario, con Anchor podemos hacer que, cuando el usuario estire el formulario para hacerlo mis grande, el ‘TextBox también ctezca, para mantenerse siempre junto al borde derecho de él. Con Anchor, “anclamos” o fijamos un control con respecto a los bordes de su contenedor. Podemos controlar aspectos como que un bo- t6n que esti en el extremo inferior derecho del formulario se ubique siempre ahi, indepen dientemente del tamafio que el usuatio le dé al formulario en tiempo de ejecucién. En cam- bio, con Docking “pegamos” el control a algu- ‘no de los bordes (silo “‘pegamos” a los cuatro bordes simulténeamente, ocupara toda la su perficie de su contenedor), La diferencia entre Anchor y Docking radica, principalmente, en que con el primero podemos colocar los con- troles a cualquier distancia del borde de su contenedor y hacer que siempre la mantenga, mientras que con el segundo el control siem- pre se pega a los bordes. Layout Panels Asi como podemos utilizar Anchor y Docking para acomodar los controles en tiempo de cjecucién en el formulario, a veces esto noves suficientes las interfacesson. i RIRDREOtcem. los pancles de disposicién de controles 0 poe nal a cnet resent armar complejos formatos de pantallas, de manera similar a como se harfa en una pagi- na web: ubicindolos de forma que “fluyan”, es decir, que los controles se coloquen uno a continuacién de otro mientras exista espacio disponible y, cuando se acabe, lo hagan en la linea siguiente. Ademés, al cambiar el tamaiio del formulatio, los controles se mueven para adaptarse al nuevo espacio. Para este €as0 utilizarfamos el control FlowLayoutPanel, En contraste con este modelo, y usando un ‘TableLayoutPanel, podemos armar una di posicién tabular; es decir, un esquema de fi Jas y columnas en las cuales alinear los con- troles, Estas columnas pueden tener anchos absolutos (un tamafio fijo en pixeles) o relati- vos (un porcentaje del tamaiio de su conte- nedos). De esta manera, al redimensionar el formulario, los controles también se irin rea- comodando, pero respetando Ia estructura tabular. Para alinear internamente los contro- les dentro de las “celdas” del Table ayour- Panel debemos usar las propiedades Anchor y Docking mencionadas anteriormente, Document Outline Cuando utilizamos muchos controles en nues- tras interfaces, a veces es necesatio acceder a ellos de manera rapida y visualizar cémo estin onganizados en relacién con el formulario. Esa funcionalidad la proporciona la ventana Docu- ment Outline, de Visual Studio, Con ella es Con Anchor “anclamos” o fijamos un control con respecto a los bordes de su contenedor. posible ver la jerarquia de controles del formu- lario en forma de TreeView y, ademas, editar cl nombre de esos controles. Para acceder a esta ventana, debemos ir al mend Ver/Otras Ven- tanas/Esquema del Documento. Esta prictica herramienta también nos permite cambiar la ubicacién de los controles, despla- zindolos hacia arriba o hacia abajo ¢ intercam- bidndolos con los demas, Incluso, si un control Sune ete et Deer eeu ee Ce ne Panels), todos con la propiedad Dock en Top, Pe eee eet ee ec dores, de modo que aquellos que le siguen subi- ee Oke cue a eee re een mat aad Pe Ree Rtas Pee gee oer eee FIGUIVA 034 | Mediance estos dos controles, podemos trabajar mas ‘comodamente con la disposicién de los demés controles en pantalla, ‘TablaLayoutPanel blogspa a om.ar FlowLayourPane! 291 Los controles de Layout nos permiten armar complejos formatos de pantallas. se encuentra dentro de un contenedor, por medio de la opcién Quitar del siguiente conte- nedor (flecha a la izquierda) podemos elimi- narlo y colocarlo fuera, sin tener que cortar y pegar el control manualmente, Herencia visual Otro de los elementos que podemos usar para realizar interfaces de usuatio consistentes, con FIGURA 035 | Con esta herramienta, podemos ver répidamente toda Ia jerarquia de controles del formulario actual, y moverlos, fee Uae eat ca Giese i ee terfaces. El uso combinado de snaplines para Pec surg Saree oan ce Cee ee ue ss ce en een a ate Sencar aa cone 292 el mismo comportamiento en uno 0 varios proyectos, es la herencia visual Un formulario no es mas que una instancia de una clase System.Windows.Forms.Form, por Io que nada nos impide crear uno con los controles y comportamientos bisicos que deseemos, Podriamos crear un formulario con un par de botones predeterminados (Aceptar y Cance~ lar, por ejemplo), aplicarle algiin disefio de ti- po de letra y colores, y agregar métodos con funcionalidad predeterminada (seguridad, va- lidaciones de campos, acceso a bases de da- tos, etc.), para luego utilizarlo como un for- mulario base a partir del cual heredaran to- dos los demas de la aplicacién, La manera mas sencilla y prictica de reali- ar esta tarea es ctear un proyecto Class Library y generar nuestro formulario alli Luego, en nuestro proyecto, lo referencia- mos y lo empleamos para crear los formula- tios basados en él. ‘Veamos eémo realizar herencia visual: *+ Con Visual Basic Express Edition, crea- ‘mos un nuevo proyecto del tipo Class Library (Biblioteca de Clases) y lo denomi- namos Base. + Acto seguido, en el proyecto creado eli rnamos la clase Class1, que se creé automé- ticamente, ya que s6lo contendremos un formulario que nos servira de base. + Hacemos clic derecho del mouse sobre el proyecto en el Explorador de Soluciones, clegimos la opcién Agregar/ Windows Form... y, en la ventana que apatece, po- )Pemincan ciemmed 6, COM. ar frmBase.cs si trabajamos con C#). + Ya tenemos nuestro formulario base. Aho- ra le agregaremos dos controles Button, que serin nuestros botones de Aceptar y Cancelar. Cambiamos su propiedad Text y Name para que eoineidan. En este ‘momento, podemos utilizar las propiedades Anchor de cada control para anclatlos abajo ala derecha (Figura 36). + En el evento Click de cada botén, ponemos un mensaje indicando la opei6n seleceiona- da (en una aplicaciGn real, tendriamos el c6- digo necesario para la tarea que realice di- cho botén). VB.Net Private Sub DtnAceptar Click(B/Val sender As Object, By¥al e As EventArgs) Handles btnAceptar.CLick MessagoBox.Show(Aceptar del formulario base") End sub Private Sub btncancelar Click(ByVal sender As object, By¥al e As EventArgs) Handles bencancelar.click MessageBox.Show("Cancelar del formuiario base”) End sub 08 private void bindceptar click(object sender, EventArgs ©) 4 Messagebox.show(*Aceptar del tormuiario base"); private void btndancelar_Click(ebject sender, Eventargs ) 4 ir del formulario Messagetiox. Show( "Cancel bese") ww.red + Una vez ereada Ia interfaz, haciendo clie derecho en el proyecto, dentro del Solu- tion Explorer, scleccionamos la opeidn Build para compilar el proyecto. Este pa~ Un formulario no es mas que una instancia de una clase System.Windows.Forms.Form. so es importante, porque si no se compi- Ia, Visual Studio no es capar de recono- cer los formularios para utilizarlos como base de otros. Si efectuamos alin eam- bio, tendremos que compilar otra vex * Para utilizar el formulario base, agregamos otto proyecto a la soluciéa, pero del tipo Windows Application, y le ponemos como nombre HerenciaVisual, Lo mareamos co- mo Proyecto de Inicio de la solucién femBasecs [Oneto} | Pagina deinico] FIGURA 036 | En nuestro formulario base colocamos los botones {que queremos tener en todos los formularios comunes. See eeu cc se Bree ue LCT ue Pore eee ears Hees b Se ean ure ac test Clem euen ee ere ee Ceucee eres ciara taco) Cee Gcac Re an eee MME R Nese oe es t 293 Visual Studio no es capaz de reconocer los formularios para utilizarlos como base de otros hasta que no los compilamos. cligiendo la opcidn Set as StartUp Project, en el ment contextual. Un buen disefio de herencia visual prevé fa rescri- TO Sue ee eer Weu ai Re ae ue) ‘cuenta no escribir directamente las acciones en el DS eee ac Roma utc invocar un método y hacer que sea Overrideable PIN annie her ene uo birlo en los formularios derivados. Lpeciarel compent el ques ere | Homie deconpo. quan de nombres fom indonsppitont Al igual que en el proyecto anterior, elimi- ‘namos ¢l formulario creado por defecto y seleccionamos Agregar/Nuevo elemento, en el meni contextual del proyecto. En la ventana que aparece seleccionamos Inherited Form, para erear un formulario con herencia visual; le ponemos como nombre frmHerencia.vb. Al aceptar, se abre una ventana para cle- gir de qué formulario quetemos heredar. De forma automética, nos muestra el for- mulario creado en ¢l otro proyecto, ya aque esti en la misma solucién (Figura 37). Si no deseamos alguno de ellos, pre- sionamos el botén Examinar... y elegi- mos algtin assembly que contenga los forms que queremos, En nuestro caso, presionamos Aceptar ditectamente, pot- que ése es el que queremos. Eso es todo, Asf ereamos nuestro formula- rio heredado junto con los controles de la base. Si lo ejecutamos, al presionar los bo- tones, se muestran los mensajes incorpora- dos en el cédigo del formulatio base. FIGURA 037 | Al erear un ‘nuevo formulario heredado, Visual Studio nos muestra la lista de los disponibles para mba Windowsappiatinn que seleccionemos el de base. erspremium THueso ners de componente Ferm 294 my a logspot.com.a Configuracion Tengamos en cuenta que cada Muchas veces sucede que cada usuario tiene usuario tiene preferencias preferencia distintas en cuanto a aspectos de la distintas en cuanto a aspectos interfuz, como colores de fondo o textos de los : contioles. Obviamente, gestionar as pessonali- de la interfaz. zaciones pot eédigo puede ser una tarea muy trabajosa. Pero si logriramos brindar estas op- Estas propiedades de configuracién se alma- ciones, generariamos una aplicacidn muy com- _cenan en un archivo especifico llamado pleta, Por suette, una de las nuevas caracteristi-_app.settings. Cuando éste es compilado, cam- cas que proporciona la plataforma NET 2.0 es bia su nombre por el del ejecutable mas la 1a posibilidad de almacenar las preferencias del usuario y los elementos de configuracién de ‘manera dinémica para utilizar en la aplicacién. Para realizar esto, proporciona herramientas que nos ahortan casi el 100% del cédigo. Por medio de estas funcionalidades, es posible per- sonalizat las aplicaciones Windows con propie~ dades tales como color de fondo, color de tex- to, nombre de la compafia, nombre del produc- to, cadenas de conexién a bases de datos, nom- bre del servidor, y mas. A continuacién, vere- SCM Cn canto ciones e, incluso, de asignarlas a controles ya Pee Oe tee ke eae Poe eee Re art a at Ce Cn ee eeu wee Cin ene cc mos en detalle emo aprovechar esta funciona- lidad en nuestra aplicacién. FIGURA 038 | Para acceder la configuracién y ediear los valores, debemos seleccionar fa solapa ‘Configuracién (Settings, en inglés) dentro de las propiedades del proyecto. vwwreduser: 295 Las propiedades de configuracién se almacenan en un archivo de configuracion llamado “app.settings”. extensién .config, Por ejemplo, si nuestro ejecutable se llama demoexe, el archivo de configuacién sera demo.exe.config, Para acceder a la configuracién desde Visual Studio, debemos abrir las propiedades del proyecto (hacemos clic derecho en el Ex- plorador de soluciones y elegimos Propie- dades) y, lnego, elegir Ia solapa Configura- cién, Alli podtemos crear las propiedades Color Titulo (teat) FIGURA 039 [Vemos Ia interfaz que usaremos para prabar cl funcionamiento de la configuracién y las propiedades dindmicas de los controles de nuestra aplcacién. que sera dindmicas y darles el alcance que corresponda: a nivel de aplicacién o a nivel de usuatio. Si optamos por nivel de aplica- cidn, cualquier cambio afectara a todos los usuarios que la utilicen, en tanto que si cle- gimos nivel de usuario, el eambio s6lo afec~ tari al usuario en particular que esté utili zando la aplicacisn. Bl entomno de desarrollo de Visual Studio Express crea automiticamente una clase Settings, que se usa para leer y grabar esos valores en tiempo de ejecucién con pocas 0 ninguna linea de cédigo y de manera transpa- rente. Esta clase posee una propiedad por cada atributo que hemos configurado, Para ver como funcionan, realizaremos el siguiente ejemplo: *+ Creamos un proyecto Windows Application, al que llamamos PraebaConfiguracién, + Abrimos las propiedades del proyecto y seleccionamos la solapa Configuracién. + Se presentard una grilla en la que vamos a crear las propiedades dinamicas. C: tiene nombre, tipo de dato, aleance (apli- cacién 0 usuario) y valor por defecto. Creamos las propiedades tal como se muestran en la Tabla 13. da una + Una ver cteadas las propiedades, cerra- ‘mos la ventana y agregamos al formulario. tres controles Button y un Label, Esto nos permitira demostrar la funcionalidad | Propiedades de configuracién para nuestro ejemplo ee eee art) 7 errs ae eet! fern eee Rena eed EL ENTORNO VISUAL STUDIO EXPRESS CREA AUTOMATICAMENTE UNA CLASE SETTINGS, QUE SE USA PARA LEER Y GRABAR LOS VALORES DE CONFIGURACION EN TIEMPO DE 13] e180 [eiCe) x) CON POCAS O NINGUNA LINEA DE CODIGO YY DE MANERA TRANSPARENTE. de la aplicaci6n, EI Label contendra el titulo de la aplicacién y se cargar dina micamente por enlace o “binding”. Los botones servirin para cambiar el color de fondo del formulario, el del texto y volver a los valores predefinidos, en caso de ser necesatio, Los nombres para cada control son los siguientes: IbITitulo, binColorFondo, binColor Testo y bnReset. La interfaz debe quedar similar 2 como se muestra en la Figura 39. Ahora comenzamos con el enlace. Selec- cionamos Label, en la ventana de propie- dades, clegimos Application Settings y, lue- 80, Properties Binding, En la ventana que se abre, scleccionamos la propiedad Text del control, que es la que descamos aso- ciar; en el valor escogemos la propiedad Titulo, cteada en el editor anteriotmente, Al confirmar la opcién, nuestro Label muestra el valor por defecto asociado. Bl resto de las propiedades las utilizare~ ‘mos por cédigo. Creamos dos procedi- mientos: uno para seleccionar el color que el usuario desee utilizar, y otro para actualizar las propiedades al modificar sus preferencias, En los eventos de cada Button llamamos a las rubinad/ereadag 2) en los eventos Load y FormClosing del formulario leemos y grabamos, respecti- ‘vamente, las opciones seleccionadas por el usuario, El cédigo que vamos a ercar en el formulario es el siguiente: Private Sub btnReset_Click(Byval sender As Systen.Odject, By¥al e As Systen.Eventhrgs} Handles binReset. Click “£1 usuario solicita volver a “10 valores por defecto. ‘Recarganos os valores inioiales nuevanente ny. Settings-Reset() uy. Settings.Reload\) ‘cargarcontiguracion() End Sub Private Sub btndolorFonde Click (8yval sender As Systen-Object, ByVal e As System.EventArgs) Handles btncolorFonde.click “canbianos el color de fondo Dim Color As Color = We.BackColor tue.Backcolor = seleccionarcoler (ocalor) End Sub Private Sub btnGolorTexto Click (ByVal sender As object, ByVal € As systen.ventargs) Handles tngolorTexto.Click anos e] color dusersicamiun.-Ulogapot.com.ar ue.Forecoler = Seleccionarcoler (otolor) End sub Private Sub Form!_ForsCloaing (yal 297 sender As Object, ByVal e As Syston.Windows.Foras.FormtlosingEventargs) Handles We.Fornclosing ‘AL cerrar actualizo el archivo de contiguracion con tas “spreferencias del usuario y.settings.colorFonde = ue. Backcolor My. Settings ColorTexto = ue. Forecolor ty. Settings. Save() End Sub Private Sub Formt_Load(By¥al sender As Object, ByVal e As Syston-EventArgs) Handles Mo.Load ‘Carga os valores provistos por et archivo de contiguracién ‘cargarcenfiguracion() End sub *Asigna los valores desde el archivo de contiguracion Private Sub Cargarcontiguracion() e.Backcolor = My. Settings. ColorFondo ue. forecolor = y.Settings.Colorrexto End sub “Pernite seleccionar un color Private Function eleccsonarcelor(Syval Color As color) As color Dim oGolor As Color = Color EN LA MAYORIA DE LAS APLICACIONES, DEBEMOS PERMITIR QUE EL USUARIO ABRA © GRABE UN ARCE HACER ALGUNA TAREA O, INCLUSO, SELECCIONE UN COLOR PARA ASIGNARLO A UN ELEMENTO DE LA INTERFAZ. Dim oColorDialog As New Colorbisiog e¢olorDialog.color = otolor CelorDialog.FullOpen = True Tf oColordialog.Shoubialog Windows. Foras.OLalogResuit.oK Then ocoler = ocolorbislog.coler Eng IF oCelordialog = Nothing Return oColor End Function ‘Una vex esetito el eédigo, podemos probarlo, Al seleccionar algsin color, éste cambia; y al cersar y volver a absir la aplicacién, la selec- ci6n del usuario permancee. Dialogos comunes En la mayoria de las aplicaciones, debemos petmitir que el usuario abra o grabe un ar- chivo, elija una carpeta para hacer alguna ta- rea 0, incluso, seleccione un color para asig- narlo a.un clemento de la interfaz, Si hace~ ‘mos ventanas propias para estos dilogos, nos estaremos saliendo un poco de los estin- dares de Windows, con la consecuencia de que al usuario le tomaré mas tiempo familia- rizarse con Ia aplicaci6n. Lo ideal es usar los mismos cuadros de dilogo que emplean to- dos los programas, Para esto, NET nos prove de unos controles muy stiles: los i ETA FAR? ELJA UNA CARI ar didlogos comunes, 0 Common Dialngs, Estos controles permiten interactuar con el usua- rio para a ejecucién de tareas comunes, como abrir un archivo, configurar la impre~ sidn, seleccionar un color del sis Para lograrlo, basta con configurar algunas propiedades ¢ invocar su método Show- Dialogd. Estos controles pueden arrastrar se dircctamente desde el Cuadro de Herra- ema, ete. mientas o bien crearse a mano por cédigo en la medida en que se necesiten. Los principales didlogos con Ios que conta- mos para hacer esto son: + ColorDialog: Muestra un didlogo que permite la seleccidn de colores por parte del usuatio. El valor elegido se obtiene de la propiedad Color. + FontDialog: Muestra un didlogo para la selecci6n de fuentes. Fl valor selecciona- do se obtiene de la propiedad Font. + FolderBrowserDialog: Permite la s cién de una carpeta. El nombre de la carpeta seleccionada se obtiene de su propiedad SelectedPath, + OpenFileDialog: Permite la scleccién de un archivo para abrirlo, El nombre se obtiene de su propiedad Filename. + SaveFileDialog: Similar al didlogo anterior, pero permite la seleccién de un nombre para grabar un archivo, La propiedad con el nombre del archivo es Filename, + PrintDialog: Presenta las opcio: la impresién de documentos. -s para Como acabamos de ver, cada control tiene un propésito bien deAsielo/MpFoveewda propiedad para acceder al valor seleccions. do por el usuario, En todos los casos, podemos utilizar el resultado del método ShowDialog (que es de tipo DialogResult) para saber si el usuario acepté o cancelé el dialogo. Los Common Controls permiten la interaccién con el usuario para la ejecucién de tareas comunes. 4 Cuadros de dialogo h Puntero [B) ColorDialog GF] FolderBrowserDialog [J FontDialog [] OpenFileDialog F] SaveFileDialog 4 General No hay controles utilizables en este grupo. Arrastre un elemento a este texto y agréguelo al cuadro de herramientas. FIGURA. 040 | Los didlogos comunes se encuentran ‘en la seccién Cuadros de Dislogo del Cuadro. de Herramientas de Visual Studio Express. eee ne ery DR ne Mere ae cd Ante ese cucet ej Se eR LCi des y leer el breve texto Teco Se A eg ee econ alterar completamente el comportamiento de los ers aa Reueenict ibilidad 299 Enlace a datos Veremos diferentes formas de vincular y asociar nuestra aplicacién con una base de datos. Muchas veces, tendremos que mostrar en pantalla * Colecciones: Cualquier coleccién puede ser datos de una tabla de la base o el valor de alguna un origen de datos (tal como ArrayList, propiedad de un objeto. Ante esta situacién, tene- _CollectionBase, etc.) 0 bien cualquier clase ‘mos dos alternativas: eseribir el eédigo necesario que implemente la interfaz Ist. para asignar a las propiedades de los controles los valores por mostrar, leyéndolos de donde corres- — ponda; o apelar ls técnicas de DataBinding,o DataBinding enlace de datos, Esta técnica permite asociar un con colecciones origen de datos o DataSource a los controles que mostrarin la informacién contenida en ellos a los usuarios. Asi como en el capitulo de ASPNET vimos que podemos enlazar un control DropDownList con los registros de una tabla, también podemos hacerlo en las aplicaciones ‘Windows, Los otigenes de datos para realizar Da- taBinding pueden ser de diferente naturaleza: Las colecciones como origenes de datos son sencillas de utilizar, Para entender mejor e6- mo funcionan, veamos un ejemplo: erearemos. una coleccién de colores y la enlazaremos a un control ComboBox en el evento Load del formulario. Fl resultado de la ejecucién se muestra en la Figura 41. * Objetos ADO.NET: DataReader, DataTable, DataSet, DataView, etc. + Documentos XML: Creados en memoria, obtenidos desde el sistema de archivos 0 pro- venientes de un WebService. VB.Net Private Sub Form!_Load(By¥al sender As Object, ByVal o As System.EventArgs) Handles We. Load “creanes coleccton im colColores As ArrayList coldolores = New ArcayList ‘ereamos contenido de 1a coleceion ‘coldolores.Add( R030") colvolores.Ada(“verde”) ‘colColores Add “Azul") Colores. Add(“Anarit1o") anit. Bisgap Ot.coOm.ar Jignanos 1a coleccién como origen datos a1 combobox FIGURA 04] | DacaBinding en funcionamiante. Al enlazar ‘enbcolores.Datssource = colcolores ‘un ArrayList con un ComboBox, los elementos del primera se muestran come item de! combo. “End Sub 300 oH private void Form_Load(object sender, EventArgs ©) 4 //oreanos coLeccion system.Collections ArrayList coleolores; colcalores = new systen.collections arraylist(); [fereanos contenido de 1a coleccion colcolores.Ada(~Roj0") colColores.Add(“Verde"); colalores.Add(“Azu2" coldolores-Add(“Anaritio"); Jasignanos 1a colecesén eono origen de datos al combobox tenbeolores.Datasource = colcolores; 5 En el ejemplo anterior enlazamos slo un ele- ‘mento, pero, en general, enlazaremos miltiples ‘campos en la visualizacién, como eddigo y deseripeién. Un ComboBox solo permite vi- sualizar un campo del origen de datos a la vez, en tanto que un DataGridView resuelve esta situacién creando columnas por cada uno de alos, Para el easo del ComboBox y de ottos controles que no permitan miltiples campos, cada uno proporciona dos propiedades adici nales: DisplayMember y MemberValue. la primera asignamos el campo del DataSource {que queremos que el usuario vea, mientras que en la segunda asignamos el valor que necesita- ‘mos en nuestro sistema (en general, seri un ‘valor que nos permita identificar de manera univoca el registro seleccionado). Ein el caso El DataBinding permite asociar un origen de datos o DataSource a los controles. ctipcién), generaremos una coleccién de estos, objetos y la enlazaremos al ComboBox. Ein es- te caso, para obtener cl valor seleccionado de- ‘bemos utilizar la propiedad SelectedValue del combo, Para ahorrar espacio, slo veremos el cédigo en CH. Primero creamos la clase Color con las propie- dades que hemos mencionado: ‘class Color « ‘feonstructor*/ public Color(int codigo, string ‘descripeion) 4 _podigo = codigo; Cet et ee ca ecco Neer eee aa nce eRe eee ant) ea. DataBind() para que el enlace se Des eon aera cea feet eR cae! de tablas, l campo es el nod WOE Y Jumna; en el caso de enlazar objetos, puede ser el nombre de una propiedad del objeto o el de tuna funcidn que retorne alin valor, En el siguiente ejemplo, vamos a crear una cla- se Color con dos propiedades (eédigo y des- PetCo ees couric ccee is ee Ra coe acca Cron ec aan nar ca PPere I ars Deu ears 30! En general, enlazaremos multiples campos en la visualizacion. _escripeion = deseripcion; ‘Ipropiedad y campo de codiga*/ private int _cosigo; public int Codigo 4 ‘get { return codigo: } set { _codige = values } /*propiedad y campo de descripcion*/ private string _descripcion; public string Descripeion ei get { return _descripeion; sripoion = value; } Como ya mencionamos, el entorno .NET pro: Sone room URC Cray Peano aroma Mae a ley Ua Piece RatcMy corns mostrar la informa: Tenet ences eM eee RRC SC uae Neer permite al usuario mo- ee esa ee ec eae Ceo aaa Serer it carlos al origen de datos. Luego, en el formalario, eseribimos el eédigo necesario para enlazar una lista de objetos de t po Color con el ComboBox: private void Form! _Load(object sender, EventArgs e) 4 1/Greanos coleccién Systen.Collections.ArrayList colcolores; colcolores = new syst: Collections.ArrayList(); J/oreanos contenido de Ia eoleccién colcolores.Ada{new Color(t, Ro}O"))5 colcolores.Ada(new Color(2, verde"); coldoleres.Adé(new Cotor(3, azul") cololores.Adg(new Golor(4, "xmariL110"} 5 ‘sJasignanos 1a coleceién cone arigen do datos a1 conbobox cembolores DataSource = colcotores; enbcolores.Displayienber = “oescripeton*; FIGURA 042 | Resultado de la seleccion al enlazar datos un ComboBox. El valor obtenide es el gue brinda la propiedad SelecredValue, que abtiene su valor de fa propiedad ValueMemiber cenbgolores,Valuetlenber = "codigo"; private vote btncodigo click object sender, EventArgs ¢) ‘ essagetox.Show("Cédig0 seleceionad + embcotores Selectedvalue, “Enlace a patos"); > El objeto BindingSource Durante el DataBinding, a veces es ne rio intercambiar diversos DataSources, y si enlazamos cada uno ditectamente a los controles, dependiendo de ellos, debere- mos alterar el cédigo de actualizaciones de los datos, Para centralizar estos cambios y abstracrnos de la fuente, podemos utilizar el objeto BindingSource. Piste proporcio- na una capa de abstraccién entre el origen de datos y los controles, y nos da flexibili- dad a la hora de controlar el enlace de los datos y su manipalacién. La manera de realizar el enlace es sencilla: asignar la propiedad DataSource con el ori- gen de datos y enlazar el BindingSouree a los controles. asta con, Veamos la modificacisn que debemos imple- mentar en el cédigo del ejemplo anterior pa- ra utilizar un BindingSoutce: BindingSource BindingSourcectl = new Bindingsouree() : BindingSourceCtl. DataSource = colColores; enbcolores.OstaSource = Bindingsourcecth; Como podemos notar, se realiza un paso inter- medio entre la asignacién del DataSource al control, utlizando como intermediario cl obje- to BindingSource. El objeto BindingSource tiene varios métodos, propiedad iiles que nos sirven para mantener el control y eventos 4 Datos ® Puntero (29) DataSet (Al DataGridView 43 BindingSource ® BindingNavigator 4 Componentes h& Puntero ® BackgroundWorker [B) DirectoryEntry © DirectorySearcher @ ErrorProvider FIGURA 043 | Los controes para trabajar con DataBinding se encuentran en la seccién Datos del Cuadro de herramientas de Visual Studio. eee eC ay 1.1) no existia el control BindingSource. Si bien era posible enlazar controles a datos, la ausencia Peon eam DUS los datos y los controles, como hacer Te Rea i er Cee cu On 303 S5e-ahe 304 del enlace a datos. En la Tabla 14 podemos ver algunos de ellos. Con estos métodos, propiedades y eventos, po- demos movernos a través del DataSource de manera independiente del control al que esté en- lazado y obtener efectivamente el objeto activo que esta seleccionado en el control, sea cual fue- ta, Podemos incluir un sistema de navegacién de registros de forma manual e, incluso, permitir el filtrado de datos. También tenemos bajo control 1h forma en que se editan los datos y hasta po- demos cancelar su edicion. Uso de DataBinding con otros controles (Otra forma de realizar DataBinding es recurrir a la propiedad DataBindings de los controles y 14 | Principales elem tos del objeto Bind asignarles las propiedades por enlazar. Esta pro- piedad es una coleccidn de objetos Binding. La clase Binding permite enlazar una propiedad de un control con un campo o propiedad del ori- gen de datos. Siguiendo con el ejemplo anterior, propiedades Cédigo y Deseripcidin de cada objeto Color en cajas de texto, Para navegar entre ellos, utlizamos un control llamado Binding-Navigator, que nos proporciona toda la funcionalidad para realizar Ja navegacién entre los elementos de un Data- Source. En la Tabla 15 vemos los controles que utilizamos en este ejemplo. Una vez que colocamos en el formulario los controles listados en la tabla, el disefio nos podriamos visualiza quedara como muestra la Figura 44, Ahora nos resta poner el c6digo en el evento Toad del formulario, para hacer el enlace de datos con los controles.

También podría gustarte