Programación en Visual Basic.NET []

Embed Size (px)

Citation preview

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    1/137

    Curso de iniciacin a laprogramacin con Visual Basic

    .NET

    Guilermo Som el Guille

    (Adaptacin a Word, Marc Salvador. Rev A)

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    2/137

    2

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    3/137

    0.1. Introduccin:................................................................................................................7

    0.2. Qu es el .NET Framework? .....................................................................................7

    0.3. Sobre la versin de Visual Basic .NET: ......................................................................80.4. Algunas aclaraciones preliminares:............................................................................8

    1. Nuestra primera aplicacin con Visual Basic .NET.: Primera entrega......................11

    1.1. Que es un Namespace (o espacio de nombres)? .....................................................13

    1.2. Que es un assembly (o ensamblado)?......................................................................14

    2. Segunda entrega ............................................................................................................17

    3. Tercera entrega..............................................................................................................27

    4. Cuarta entrega ...............................................................................................................41

    4.1. Variables, constantes y otros conceptos relacionados ..............................................41

    4.2. Tipos de datos de Visual Basic.NET y su equivalente en el Common Language

    Runtime (CLR) ........................................................................................................................43

    4.3. Sobre la necesidad u obligatoriedad de declarar las variables: ...............................45

    4.4. Qu ventajas tiene usar constantes en lugar de usar el valor directamente?........48

    4.5. Evaluar expresiones lgicas.......................................................................................51

    5. Quinta entrega ...............................................................................................................57

    5.1. Declarar varias variables en una misma lnea: ........................................................57

    5.2. Declarar varios tipos de variables en una misma lnea:...........................................57

    5.3. La visibilidad (o alcance) de las variables: ...............................................................59

    6. Sexta entrega..................................................................................................................63

    6.1. Prioridad de los operadores .......................................................................................65

    6.2. Bucles en Visual Basic .NET.....................................................................................66

    7. Sptima entrega .............................................................................................................71

    7.1. Las enumeraciones (Enum)..............................................................................72

    8. Octava entrega ...............................................................................................................81

    8.2. Cmo hacer que se produzca una excepcin: ...........................................................87

    9. Novena entrega..............................................................................................................91

    9.1. Tipos de datos por valor .............................................................................................91

    9.2. Tipos de datos por referencia.....................................................................................91

    9.3. Los Arrays...................................................................................................................94

    9.4. Qu tipos de datos se pueden usar para crear arrays? ...........................................94

    9.5. Declarar variables como arrays.................................................................................95

    9.6. Reservar memoria para un array...............................................................................95

    9.7. Asignar valores a un array.........................................................................................96

    3

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    4/137

    9.8. Acceder a un elemento de un array .......................................................................... 96

    9.9. Los lmites de los ndices de un array ....................................................................... 96

    9.10. Saber el tamao de un array ..................................................................................... 96

    9.11. Inicializar un array al declararla.............................................................................. 97

    9.12. Los arrays pueden ser de cualquier tipo ................................................................... 97

    9.13. Usar un bucle For Each para recorrer los elementos de un array.......................... 97

    9.14. Clasificar el contenido de un array........................................................................... 98

    9.15. El contenido de los arrays son tipos por referencia ................................................. 99

    9.16. Copiar los elementos de un array en otro array ....................................................... 99

    10. Dcima entrega............................................................................................................ 101

    10.1. Los arrays multidimensionales................................................................................ 101

    10.2. Declarar arrays multidimensionales....................................................................... 101

    10.3. El tamao de un array multidimensional ............................................................... 102

    10.4. El nmero de dimensiones de un array multidimensional. ................................... 102

    10.6. Redimensionar un array multidimensional............................................................ 104

    10.7. Eliminar un array de la memoria. .......................................................................... 105

    10.8. Podemos clasificar un array multidimensional?.................................................. 105

    10.9. Copiar un array multidimensional en otro. ............................................................ 105

    10.10. Los formatos a usar con las cadenas de Console.Write y WriteLine. ................ 106

    11. Undcima entrega ....................................................................................................... 111

    11.1. La programacin orientada a objetos ..................................................................... 111

    11.2. Los tres pilares de la Programacin Orientada a Objetos ..................................... 111

    11.3. Las clases ................................................................................................................. 114

    11.4. Los Objetos............................................................................................................... 114

    11.5. Los miembros de una clase...................................................................................... 114

    11.6. Crear o definir una clase......................................................................................... 115

    11.7. Acceder a los miembros de una clase...................................................................... 116

    11.8. Ejemplo de cmo usar la herencia .......................................................................... 117

    12. Duodcima entrega ..................................................................................................... 121

    12.1. Las partes o elementos de un proyecto de Visual Basic .NET............................... 121

    12.2. Las partes o elementos de una clase ....................................................................... 123

    12.3. Los procedimientos: mtodos de las clases. ............................................................ 124

    12.4. Parmetros o argumentos de los procedimientos................................................... 125

    12.5. Parmetros por valor y parmetros por referencia ................................................ 126

    13. Treceava entrega......................................................................................................... 129

    13.1. Parmetros opcionales............................................................................................. 129

    4

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    5/137

    13.2. Sobrecarga de procedimientos.................................................................................131

    13.3. Sobrecargar el constructor de las clases .................................................................133

    13.4. Array de parmetros opcionales ..............................................................................133

    14. Glosario........................................................................................................................135

    5

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    6/137

    6

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    7/137

    Curso de iniciacin a la programacin conVisual Basic .NET

    (http://guille.costasol.net/NET/cursoVB.NET/tutorVBNET01.htm)

    0.1. Introduccin:Debido a que la nueva versin de Visual Basic no es slo una mejora con respecto a lasversiones anteriores, sino que cambia mucho, tanto como si de otro lenguaje deprogramacin se tratara, creo que se merece que se explique de forma ms o menos fcilde comprender para que cualquiera que se decida a elegirlo como su lenguaje deprogramacin lo tenga, valga la redundancia, fcil.

    Tan fcil como permitan las circunstancias, y adems, (para que esto de estudiar noresulte algo tedioso), tan ameno como me sea posible, ya que las cosas se pueden

    explicar de muchas formas y, a pesar de parecer que peco de falta de modestia, estoyseguro que este curso de iniciacin a la programacin con Visual Basic .NET te va aresultar ameno y fcil de comprender... seguro!

    Pero no slo vas a aprender a programar con VB.NET, sino que al estar "basado" en el.NET Framework, conocers lo suficiente de este marco de desarrollo que podrsatreverte con otros lenguajes .NET, tales como C#, ya que al fin y al cabo, el corazn delos lenguajes .NET es el .NET Framework.Para ir aclarando ideas, veamos algunos conceptos que habr que tener claros desde elprincipio:Visual Basic .NET usa una jerarqua de clases que estn incluidas en el .NET Framework,por tanto conocer el .NET Framework nos ayudar a conocer al propio Visual Basic .NET,aunque tambin necesitars conocer la forma de usar y de hacer del VB ya que, aunqueen el fondo sea lo mismo, el aspecto sintctico es diferente para cada uno de loslenguajes basados en .NET Framework, si no fuese as, slo existira un solo lenguaje!

    Me imagino que la primera pregunta a la que habra que responder es:

    0.2. Qu es el .NET Framework?

    Voy a intentar dar una respuesta que sea fcil de "asimilar", a ver si lo consigo...

    Primer intento, lo que se dice en el eBookMicrosoft .NET Framework, cuya versin enCastellano puedes conseguir usando este link: (este link est actualizado, al menos afecha de hoy 10 de noviembre de 2002)

    ".NET Framework es un entorno para construir, instalar y ejecutar servicios Web y otrasaplicaciones.Se compone de tres partes principales: el Common Language Runtime, las clasesFramework y ASP.NET"

    Aunque dicho libro est basado en la Beta1 es vlido para aclarar conceptos sobre lo quees el .NET Framework adems de otros conceptos como el Common Language Runtime(CLR), Common Language Specification (CLS), Common Type System (CTS), MicrosoftIntermediate Language (MSIL), los ensamblados o assemblies, as como sobreASP.NET,conceptos que si bien no son imprescindibles para poder usar Visual Basic .NET, esconveniente leer un poco sobre ellos, para no estar totalmente perdidos cuando nos

    encontremos con esos conceptos...Segundo intento, lo que dice la MSDN Library:

    7

    http://guille.costasol.net/NET/cursoVB.NET/tutorVBNET01.htmhttp://www.microsoft.com/spain/download/msdn/ebooks/Microsoft.NETFramework(PPC).lithttp://www.microsoft.com/spain/download/msdn/ebooks/Microsoft.NETFramework(PPC).lithttp://www.microsoft.com/spain/download/msdn/ebooks/Microsoft.NETFramework(PPC).lithttp://www.microsoft.com/spain/download/msdn/ebooks/Microsoft.NETFramework(PPC).lithttp://guille.costasol.net/NET/cursoVB.NET/tutorVBNET01.htm
  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    8/137

    "El .NET Framework es un entorno multi-lenguaje para la construccin, distribucin yejecucin de Servicios Webs y aplicaciones.""El .NET Framework es una nueva plataforma diseada para simplificar el desarrollo deaplicaciones en el entorno distribuido de Internet.""El .NET Framework consta de dos componentes principales: el Common LanguageRuntime y la librera de clases .NET Framework."

    Tercer intento, aclarando las cosas, para que se te "queden" grabadas:

    El .NET Framework es el corazn de .NET, cualquier cosa que queramos hacer encualquier lenguaje .NET debe pasar por el filtro cualquiera de las partes integrantes del.NET Framework.

    El Common Lenguage Runtime (CLR) es una serie de libreras dinmicas (DLLs), tambinllamadas assemblies, que hacen las veces de las DLLs del API de Windows as como laslibreras runtime de Visual Basic o C++. Como sabrs, y si no lo sabes ahora te lo cuentoyo, cualquier ejecutable depende de una forma u otra de una serie de libreras, ya sea entiempo de ejecucin como a la hora de la compilacin. Pues el CLR es eso, una serie de

    libreras usadas en tiempo de ejecucin para que nuestros ejecutables o cualquierabasado en .NET puedan funcionar. Se acab eso de que existan dos tipos de ejecutables:los que son autosuficientes y no dependen de libreras externas o los que necesitan delibreras en tiempo de ejecucin para poder funcionar, tal es el caso de las versionesanteriores de Visual Basic.

    Por otro lado, la librera de clases de .NET Framework proporciona una jerarqua declases orientadas a objeto disponibles para cualquiera de los lenguajes basados en .NET,incluido el Visual Basic. Esto quiere decir que a partir de ahora Visual Basic ya no ser la"oveja negra" de los lenguajes de programacin, sino que tendr a su disposicin todaslas clases disponibles para el resto de los lenguajes basados en .NET, (o casi), con lo cualslo nos diferenciar del resto de programadores en la forma de hacer las cosas: msfciles!

    VB.NET ahora es totalmente un lenguaje orientado a objetos con herencia y todo.Tambin permite crear Threads o hilos o tramas de ejecucin y otras cosas que antes nosestaban vetadas. De todo esto veremos en esta serie de "entregas", espero que, aunquees un poco ms complicado que el Visual Basic de "siempre", confo en que te sea fcil deasimilar. A ver si lo consigo!

    0.3. Sobre la versin de Visual Basic .NET:A la hora de escribir estas lneas, la versin de Visual Basic .NET que hay disponible es laque se incluye en la Beta2 de Visual Studio .NET. Pero segn dicen, la versin finaltendr pocos cambios con respecto a la Beta 2, as que, espero que todo lo que aqu

    explique sea vlido para la versin definitiva de Visual Basic .NET.

    0.4. Algunas aclaraciones preliminares:

    Antes de empezar a ver el cdigo, un par de aclaraciones, que aunque ahora puede serque te suenen a chino, (si eres chino o conoces ese idioma, slo decirte que es una frasehecha: "me suena a chino" es como decir: "no s de que me ests hablando") , prontosern tan usuales que acabars por asimilarlas como si toda tu vida las hubieras estadousando... o casi...

    Extensin de los ficheros de cdigo.En Visual Basic .NET a diferencia de lo que ocurra en las versiones anteriores de VisualBasic, slo existe un tipo de fichero de cdigo, el cual tiene la extensin .vb, en este tipode fichero pueden coexistir distintos tipos de elementos, por ejemplo: un mdulo declase, un formulario, un mdulo de cdigo, un control, etc.; mientras que en lasversiones anteriores de Visual Basic, cada uno de estos elementos tenan su propio tipo

    8

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    9/137

    de fichero con su respectiva extensin. Si no sabes o no quieres saber de lo que ocurraen las versiones anteriores, me parece muy bien... pero esto slo es para que lo sepas yno te sorprenda, si es que hay algo que an puede sorprenderte, claro.

    Tipos de ejecutables.Con Visual Basic .NET puedes crear bsicamente estos dos tipos de ejecutables:de consola, no grfico, al estilo del viejo MS-DOS, y grficos, como los que normalmenteestamos acostumbrados a ver en Windows.Existen otros tipos de aplicaciones que se pueden crear con Visual Basic .NET:aplicaciones ASP.NET, (realmente no es una aplicacin o ejecutable, sino un compendiode distintos tipos de elementos...), servicios Web, servicios Windows, etc.

    9

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    10/137

    10

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    11/137

    1. Nuestra primera aplicacin con Visual Basic .NET.:Primera entrega

    Para ir calentando motores, creo que lo mejor es empezar creando una pequea

    aplicacin con VB.NET, despus iremos aclarando los distintos conceptos usados... as teresultar menos complicado todo lo que tengo preparado para ti.

    Inicia el Visual Studio .NET, por defecto te mostrar la "pgina de inicio" desde la cualpueden crearse nuevos proyectos o bien abrir alguno de los ms recientemente abiertos.Pulsa en Nuevo proyecto

    Te mostrar los diferentes tipos de proyectos que se pueden crear, en el panel izquierdoselecciona Proyectos de Visual Basic (Visual Basic Projects) y de los que muestra en elpanel de la derecha, selecciona Console Application

    11

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    12/137

    Tendrs que especificar el directorio en el que se guardar el proyecto, as como elnombre del mismo, (creando un directorio con el nombre del proyecto indicado), deja elnombre que muestra por defecto, en la versin inglesa de Visual Studio .NET se llamarConsoleApplication1. Pulsa en OK (Aceptar) y se crear el proyecto.Por defecto te mostrar lo siguiente:

    Es decir, crear un fichero llamado Module1.vb, (mostrado a la derecha en el SolutionExplorer), con el cdigo necesario para empezar a escribir. Fjate que adems del

    procedimiento Sub Main, el cual se usar como punto de entrada de nuestro ejecutable,tambin ha creado una "definicin" llamada Module Module1 con su respectivo EndModule, el cual indica dnde termina la definicin del mdulo. Esto es as, porque, comote dije hace un rato, en un mismo fichero .vb, pueden existir distintos tipos deelementos. Por ahora, dejmoslo as... ya habr tiempo de complicarnos la vida...

    Una aclaracin: lo que estamos creando es una aplicacin tipo consola, esdecir, no se crear ninguna ventana grfica, sino que el ejecutable quevamos a crear funciona desde una ventana de MS-DOS (o consola). Esto locomprobaremos cuando ejecutemos el proyecto.

    Lo que queremos, (o mejor dicho, lo que YO QUIERO), mostrar, es un mensaje que diga

    algo as como: Hola mundo .NET que original! verdad?, por tanto para mostrar un textoen la "consola", usaremos una funcin, mtodo o instruccin, (como prefieras llamarla),que si bien no es nativa de Visual Basic .NET, la usaremos como si lo fuese... comoveremos ms tarde, TODO esto es posible gracias a los assemblies o a las clasesincluidas en el .NET Framework. Por ahora simplemente confa en m y escribe lo que tevoy a decir.

    La funcin en cuestin, (realmente todo lo que se usa en .NET son funciones), esConsole.Write y se usa de la siguiente forma:

    Console.Write("Hola mundo .NET"), es decir incluiremos dentro de parntesis lo quequeremos que se muestre en la consola, en este caso queremos mostrar un texto, el cualhay que incluirlo dentro de comillas dobles.

    Escrbelo entre el Sub Main() y el End Sub. Comprueba que cuando escribas Console y elpunto, se mostrarn las funciones que Console pone a nuestra disposicin, as como unapequea ayuda, en modo de ToolTip, aunque a esto, o a algo parecido, ya estarsacostumbrado si has usado alguna vez el Visual Basic 5/6.

    Bien, ya tenemos todo lo que necesitamos. Ahora tendremos que indicarle al "EntornoIntegrado" (IDE) que compile el proyecto y lo ejecute, y despus de compilarse elproyecto, se deber mostrar el texto en una ventana de DOS (o consola).(Guille, por qu me da la impresin de que no se va a mostrar nada? te gustarapreguntarme en este preciso momento)Para salir de dudas, pulsa F5 (o a la flecha azul o botn con figura de PLAY de unreproductor)

    Pregunta: Que ha pasado?Respuesta: Realmente se ha mostrado el mensaje en una ventana de consola...

    12

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    13/137

    (Salvo que hayas cometido algn error, cosa que slo habr ocurrido si en lugar de estarleyendo, te has dedicado a hacer tus propias pruebas, as que... HAZ EL FAVOR DEATENDER EN CLASE! Ya tendrs tiempo de hacer tus propias pruebas!)P: Entonces, por qu no se ve?R: Porque despus de mostrarse se ha cerrado la ventana.P: Cmo podemos ver el mensaje?

    R: Ejecutando el EXE desde una ventana de DOS (o consola)Pero lo mejor sera hacer que el programa se pare hasta que pulsemos la tecla Intro.Para ello, aade la siguiente lnea a continuacin de la anterior:Console.Read()

    Pulsa de nuevo F5 y vers como esta vez si que se muestra el mensaje, adems de quela ventana no se cierra hasta que pulses Intro.Realmente puedes escribir lo que te de la gana y se ir mostrando en la ventana deconsola, pero hasta que pulses Intro no dejar de mostrarse. (Tampoco iba a ser elprimer ejemplo tan perfecto... que te crees!).

    Pues sta es nuestra primera aplicacin con el Visual Basic .NET.

    Realmente tan intil como poco prctica, pero... queda muy bien eso de saber que yasomos capaces de crear nuestros propios ejecutables. La verdad es que a estas alturas (omejor dicho bajuras) del curso o tutorial no pretenders hacer cosas ms "sofisticadas",entre otras razones, porque se supone que no sabes nada de nada... cmo? que si quesabes... que ya has trabajado antes con el Visual Basic... que incluso te has ledo miCurso Bsico de VB... entonces... tendrs que esperar algunas entregas o unirte al grupode estudiantes noveles (o principiantes o novatos o... como quieras llamarlos) y esperara que los conceptos bsicos estn aclarados, ya que este curso es un curso de iniciaciny si los que lo siguen ya supieran tanto como t, no sera un curso de iniciacin... pueseso... (Que borde (desagradable) eres algunas veces Guille!)

    Olvidemos a los otros Guilles y sigamos...

    Antes de continuar, vamos a conocer un poco sobre el entorno de desarrollo de VisualStudio .NET, (que es el que se usa con Visual Basic .NET), para que podamos configuraralgunos aspectos, por ejemplo para indicar cmo se comportar el compilador eintrprete sobre el cdigo que escribamos o para configurar las libreras (assemblies) quese usarn en nuestras aplicaciones. Recuerda que Visual Basic .NET usa una serie delibreras (de clases) con las funciones que necesitemos en cada momento...

    Te parece complicado? No te preocupes... ahora simplemente lee y pronto entenders,pero por favor: lee! no intentes pasar todo este "rollo" por alto, ya que si no te enterasde lo que te estoy contando, seguramente acabars preguntndomelo por e-mail y lanica respuesta que recibirs por mi parte es que te vuelvas a leer toda esta parrafada...gracias.

    Por ejemplo, para poder mostrar un texto en la consola, necesitamos tener disponible lalibrera en la cual est declarada la clase Console, para que podamos acceder a lasfunciones que dicha clase pone a nuestra disposicin, (por ejemplo Write o Read); eneste caso la librera en la que est la clase Console es: System. System realmente es unNamespace o espacio de nombres, no es una librera o assembly.

    1.1. Que es un Namespace (o espacio de nombres)?"Un espacio de nombres es un esquema lgico de nombres para tipos en el que unnombre de tipo simple, como MiTipo, aparece precedido por un nombre jerrquicoseparado por puntos. [...]"

    As es como lo definen en el eBook de .NET Framework que mencion al principio.

    Para que nos entendamos, un Namespace, (prefiero usar el nombre en ingls, ya que ases como aparecer en el cdigo), es una forma de agrupar clases, funciones, tipos dedatos, etc. que estn relacionadas entre s. Por ejemplo, entre los Namespaces que

    13

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    14/137

    podemos encontrar en el .NET Framework encontramos uno con funciones relacionadascon Visual Basic: Microsoft.VisualBasic. Si te fijas, Microsoft y VisualBasic estnseparados por un punto, esto significa que Microsoft a su vez es un Namespace quecontiene otros "espacios de nombres", tales como el mencionado VisualBasic, CSharp yWin32 con el cual podemos acceder a eventos o manipular el registro del sistema...

    Para saber que es lo que contiene un Namespace, simplemente escribe el nombre con unpunto y te mostrar una lista desplegable con los miembros que pertenecen a dichoespacio de nombres.

    Por regla general se deberan agrupar en un Namespace funciones o clases que estnrelacionadas entre s. De esta forma, ser ms fcil saber que estamos trabajando confunciones relacionadas entre s.

    Pero el que distintos espacios de nombres pertenezcan a un mismo Namespace, (vienebien esto de usar la traduccin castellana e inglesa de una palabra, para no serredundante), no significa que todos estn dentro de la misma librera o assembly. UnNamespace puede estar repartido en varios assemblies o libreras. Por otro lado, unassembly, (o ensamblado), puede contener varios Namespaces.

    Pero de esto no debes preocuparte, ya que el IDE de Visual Studio .NET se encarga de"saber" en que assembly est el Namespace que necesitamos.

    1.2. Que es un assembly (o ensamblado)?"Un ensamblado es el bloque constructivo primario de una aplicacin de .NET Framework.Se trata de una recopilacin de funcionalidad que se construye, versiona e instala comouna nica unidad de implementacin (como uno o ms archivos). [...]"

    Para que nos entendamos, podramos decir que un assembly es una librera dinmica(DLL) en la cual pueden existir distintos espacios de nombres. Aunque esto es simplificarmucho, por ahora nos vale.

    Un ensamblado o assembly puede estar formado por varios ficheros DLLs y EXEs, pero loms importante es que todos los ensamblados contienen un manifiesto (o manifest),gracias al cual se evitan muchos de los quebraderos de cabeza a los que Windows nostiene acostumbrados, al menos en lo referente a las distintas versiones de las libreras yejecutables, seguramente habrs odo hablar de las DLL Hell(o libreras del demonio)expresin que se usa cuando hay incompatibilidad de versiones entre varias libreras queestn relacionadas entre si. Por ejemplo, supongamos que tenemos una librera DLL queen su primera versin contena X funciones. Al tiempo, se crea la segunda versin dedicha librera en la que se cambian algunas funciones y se aaden otras nuevas, paramejorar el rendimiento de las funciones contenidas en esa librera se usa otra DLL que esusada por algunas de las funciones contenidas en esa segunda versin. Esa otra librerapuede ser una librera del sistema, la cual a su vez se actualiza con nueva funcionalidad y

    puede que dicha funcionalidad dependa a su vez de una tercera librera.

    Resulta que instalamos un programa que usa las ltimas versiones de todas estaslibreras. Todo va bien, el programa funciona a las mil maravillas y nosotros estamos"supersatisfechos" de ese programa que no se cuelga ni una sola vez... (Quin habrhecho ese programa tan maravilloso?, sin comentarios...)

    Ahora llega a nuestras manos otra aplicacin que necesitamos instalar y la instalamos,pero resulta que esa aplicacin usa la primera versin de nuestra famosa librera. Si elprograma de instalacin est bien hecho, no ocurrir nada malo, ya que al descubrir quetenemos una versin ms reciente de la librera, deja la que ya est instalada. Probamosel programilla de marras y todo funciona bien. Probamos el maravilloso programa

    anterior y tambin funciona bien. Cual es el problema? Por ahora ninguno, peroespera... Despus instalamos un programa que usa una de las libreras del sistema u otraque tambin usa nuestra "flamante" librera, pero ese programa se ha instalado de "malamanera", bien porque el programa de instalacin sea una caca o bien porque

    14

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    15/137

    simplemente se ha instalado mal... como quiera que ha instalado una librera anterior ala que nuestros dos maravillosos ejecutables usan, se puede dar el caso de que ningunode los dos programas funcionen correctamente... esto ocurri cuando sali el InternetExplorer 4 y a ms de uno nos trajo de cabeza, aunque tambin ha ocurrido con otrosprogramas que no han tenido en cuenta a la hora de instalar que ya existe una versinms reciente de la librera. Por suerte, esto ya es menos comn que hace unos aos,

    sobre todo si los programas de instalacin estn creados con el Windows Installer oestamos usando el Windows 2000/XP. Pero es que .NET mejora an esa "imposibilidad"de meter la pata ya que cada assembly contiene un manifiesto en el cual se indica: -elnombre y la versin del assembly, -si este assembly depende de otros ensamblados, conlo cual se indica hasta la versin de dichos ensamblados,

    - los tipos expuestos por el assembly (clases, etc.),- permisos de seguridad para los distintos tipos contenidos en el assembly.

    Tambin se incluyen en los assemblies los datos del copyright, etc.

    Nuevamente he de decirte que no debes preocuparte demasiado por esto, ya que es elpropio .NET el que se encarga de que todo funciones a las mil maravillas, o al menos esaes la intencin.

    La ventaja de los ensamblados es que "realmente" no necesitan de una instalacin y unregistro correcto en el registro del sistema de Windows, ya que es el "intrprete" de .NETel que se encarga de hacer las comprobaciones cuando tiene que hacerlas. Por tantopodramos distribuir una aplicacin sin necesidad de crear un programa de instalacin.Pero, (por qu siempre hay un pero?), si la aplicacin usa ensamblados compartidos,puede que sea necesario usar una instalacin.

    Los ensamblados compartidos se pueden usar por varias aplicaciones diferentes y debenestar "debidamente" instalados en el directorio asignado por el propio .NET Framework.

    Ejemplo de ensamblados compartidos son los que definen las clases (tipos) usados por elpropio .NET Framework.

    Para terminar esta primera entrega introductoria al mundo .NET vamos a ver algunosconceptos que usaremos con bastante frecuencia en el resto de las entregas:

    Nota: Las palabras o conceptos estn en la pgina del glosario.

    15

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    16/137

    16

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    17/137

    2. Segunda entrega

    En la entrega anterior vimos algunos conceptos generales que acompaan a esta versinde Visual Basic, tambin vimos algunas palabras que usaremos durante todo este cursode iniciacin, dichas palabras estn en el glosario, al cual ir aadiendo nuevasdefiniciones, conforme surjan o yo me vaya acordando, as que te recomiendo que de vezen cuando le eches un vistazo.

    Ahora vamos a empezar con esta segunda entrega del Curso de Iniciacin a laprogramacin con Visual Basic .NET

    Lo primero que vamos a aprender es a saber manejarnos un poco con el entorno dedesarrollo (IDE) de Visual Studio .NET, s he dicho entorno de desarrollo de Visual Studio,no de Visual Basic... y no me he confundido, ya que dicho IDE es el mismo para cualquierlenguaje .NET. Por tanto, si adems de usar el VB.NET quieres hacer tus "pinitos" con elC# o con cualquier otro, no tendrs que abrir otro programa para cada uno de esoslenguajes. Incluso podrs trabajar con varios proyectos a un mismo tiempo, aunque sean

    de lenguajes diferentes. Adems, si as lo quieres y "sabes" cmo hacerlo, puedes creartus propios complementos para que se integren con el IDE de Visual Studio .NET.

    Aunque eso, casi con total seguridad, no lo veremos en este curso de iniciacin.

    Lo primero que vamos a hacer es cargar el entorno de desarrollo del Visual Studio .NET,as que... ya puedes abrirlo, si es que no la has hecho ya.

    En la pantalla de inicio, selecciona un nuevo proyecto. Pero esta vez vamos a seleccionaruna aplicacin de Windows:

    Figura 1

    No te preocupes, que no te voy a complicar la vida, simplemente vamos a tener algn

    tipo de proyecto cargado en el entorno de desarrollo, ya que lo que vamos a ver es cmomodificar y configurar algunos de los aspectos del mismo.

    17

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    18/137

    Djale el nombre que te muestra, ya que nos da igual cmo se llame. (el Guille est unpocopasota, verdad?)

    En el proyecto, se habr creado un formulario, el cual seguramente te lo mostrar deforma automtica. Si no se mostrara nada y siguiera estando la pantalla de inicio... daleun respiro ya que seguramente se lo estar pensando... en caso de que despus de

    pensrselo no lo mostrara tampoco... fjate en el lado derecho de la pantalla, vers quehay un "panel" o ventana en la que se indica el proyecto actual y se muestran losficheros que lo componen. Ese panel es el "Solution Explorer" o Explorardor deSoluciones, (te digo cmo se llama en los dos idiomas, ya que, algunas de las imgenesque te voy a mostrar estn capturadas de la versin en castellano del Visual Studio .NETy otras de la versin en ingls... as cuando la veas en un idioma o en otro, sabrs deque estoy hablando).

    Figura 2

    Para que se muestre el formulario (Form1), haz doble click en dicho "elemento" delexplorador de soluciones.

    Lo que vamos a hacer ahora es cambiar la separacin de los puntos que se muestran enel formulario, ese "grid" o grilla, servir para ajustar los controles (ya sabrs de quhablo) que se aadan a dicho formulario.

    Por defecto la separacin es de 8x8 puntos o pixels... y vamos a ponerlo en 4x4.

    Selecciona el formulario, (el cual se supone que ya si puedes verlo), simplemente conhacer un click en l es suficiente. Vers que tiene este aspecto:

    18

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    19/137

    Figura 3

    Realmente no tendr ese aspecto, salvo que tengas el Windows XP, pero al aspecto queme refiero es al de la separacin de los puntos.

    En el panel de la derecha, debajo del explorador de soluciones, est la ventana depropiedades del elemento que actualmente est seleccionado, en nuestro caso son laspropiedades del Form1. Vamos a buscar el elemento GridSize para poder cambiar eltamao de separacin. Vers que se muestran dos valores separados por punto y coma,pero tambin hay una cruz a la izquierda de la palabra GridSize, si pulsas en esa cruz, semostrarn los tamaos a lo que se refiere esos valores separados por punto y coma:

    Figura 4

    Posicinate en cualquiera de ellos y asgnale el valor 4, de esta forma, tendremos unformulario con una cuadrcula ms pequea, en la que ser ms fcil posicionar loscontroles que queramos aadir al formulario en cuestin.

    Fjate que despus de haber cambiado esos valores, los mismos se muestran en"negrita", indicndonos de esta forma que son valores que nosotros hemos asignado, losque tiene por defecto. Tambin te habrs fijado que ahora el "grid" tiene los puntos ms

    juntos. Si no te gusta as como est ahora, ponlos a tu gusto. Yo los configuro a 4x4,pero tu eres libre de ponerlos como mejor te plazca...

    El aspecto habr cambiado a este otro, te muestro el aspecto de Windows XP y el delWindows 2000 (clsico), aunque en resumidas cuentas, lo que hay que ver es que los

    punticos esos estn ms arrejuntaos...

    19

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    20/137

    Figura 5Figura 6

    Para aadir controles al formulario, hay que usar la barra de herramientas que estsituada en la parte izquierda del IDE de Visual Studio .NET, por ejemplo para aadir unaetiqueta (Label) y una caja de texto (TextBox), simplemente haz doble-click sobre esoselementos de la barra de herramientas y se aadirn al formulario.

    Para poder situarlos en el sitio que ms te apetezca, simplemente pulsa en ellos ymanteniendo el ratn pulsado, ponlos donde ms te guste... todo esto deberas saberhacerlo, ya que son cosas bsicas de Windows, as que en prximas ocasiones no esperes

    tantas explicaciones... vale?

    Aade ahora un botn (Button) y sitalo debajo del textbox. Para cambiarle el texto quemuestra el botn, que por defecto ser el nombre que el IDE le ha asignado, en estaocasin ser Button1, hay que usar la ventana de propiedades, en esta ocasin elelemento que nos interesa de esa ventana de propiedades es Text, escribe Mostrar ycuando pulses Intro, vers que el texto del botn tambin ha cambiado. Si antes hastrabajado con el Visual Basic "clsico", esa propiedad se llamaba Caption. Decirte que yala propiedad Caption no existe en ningn control, ahora se llama Text. Haz lo mismo conla etiqueta, recuerda que tienes que seleccionarla (un click) para que se muestren laspropiedades de la etiqueta, escribe Nombre: y pulsa intro.

    Ahora vamos a escribir cdigo para que se ejecute cada vez que se haga click en el botn

    que hemos aadido.

    Para ello, selecciona el botn Mostrar y haz doble click en l, se mostrar una nuevaventana, en este caso la ventana de cdigo asociada con el formulario que tenemos ennuestro proyecto.

    Te mostrar esto: (realmente te mostrar ms cosas, pero por ahora centrate slo eneste cdigo)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.ClickEndSub

    Lo que vamos a hacer ahora, como ya te he dicho, es escribir el cdigo que se ejecutarcuando se haga click en ese botn, lo cual producir el evento Click asociado con dichobotn, ese evento se producir si se hace un click propiamente dicho, es decir con el

    20

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    21/137

    ratn, o bien porque se pulse intro o la barra espaciadora cuando el botn tenga el foco.La nomenclatura, (forma de llamar a las cosas), para los eventos de Visual Basic siguenel siguiente "esquema": [nombre del control] [guin bajo] [nombre del evento] Pero estoslo es una sugerencia que Visual Basic nos hace, en las versiones anteriores no era unasugerencia, era una imposicin. Podemos dejar el nombre que Visual Basic nos sugiere opodemos poner el nombre que nosotros queramos; lo importante aqu es la parte final de

    la lnea de declaracin del procedimiento: Handles Button1.Click, con esto es con loque el compilador/intrprete de Visual Basic sabe que este procedimiento es un evento yque dicho evento es el evento Click del objeto Button1.Un detalle: el nombre Button1 es porque hemos dejado el nombre que por defecto el IDEde Visual Studio asigna a los controles que se aaden a los formularios. Si quieres que sellame de otra forma, simplemente muestra el formulario, selecciona el control al quequieres cambiarle el nombre, busca la propiedad Name en la ventana de propiedades ycambia el nombre que all se sugiere por el que tu quieras... o casi, ya que para losnombres de los controles, as como para otras cosas que usemos en Visual Basic hay queseguir ciertas normas:

    - El nombre debe empezar por una letra o un guin bajo.- El nombre slo puede contener letras, nmeros y el guin bajo.

    Por tanto, si quieres cambiarle el nombre al evento que se produce cuando se hace clicken el botn, escribe ese nombre despus de Private Sub, aunque no es necesariocambiar el nombre del evento, ya que, al menos por ahora, nos sirve tal y como est.

    Lo que si importa es lo que escribamos cuando ese evento se produzca, en este casovamos a a hacer que se muestre un cuadro de dilogo mostrndonos el nombre quepreviamente hemos escrito en el cuadro de texto.

    Escribe lo siguiente en el hueco dejado por el Visual Basic, la lnea que hay entre PrivateSub... y End Sub

    MsgBox("Hola " & TextBox1.Text)

    Antes de explicarte que es lo que estamos haciendo, pulsa F5 para que se ejecute elcdigo que hemos escrito o pulsa en el botn "play" que est en la barra de botones.

    Escribe algo en la caja de textos, que por defecto tendr "TextBox1", (que es el valor quepor defecto Visual Basic le asigna a la propiedad Text de dicho control), pulsa en el botnMostrar y vers que se muestra un cuadro de dilogo dicindote Hola y a continuacin loque hayas escrito en el TextBox.

    Algo as:

    21

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    22/137

    Figura 7

    Pues s: esta es tu primera aplicacin para Windows creada con el Visual Basic .NET!(pfiuuuuu, pfiiiiuuuu, bang! (sonido de cohetes y esas cosas))

    Pulsa en el botn OK (Aceptar) para quitar el cuadro de dilogo y para cerrar el

    formulario, pulsa en el botn con la "x".

    Ahora vamos a aadir otro botn, el cual se llamar cmdCerrar y el texto que debemostrar es: Cerrar.

    Y este es el cdigo que debe ejecutar cuando se haga click en el... te atreves a hacerlosin ayuda? Si no te atreves, tendrs que hacerlo sin mi ayuda... creo que ya sabes cmohacerlo... venga, no me seas holgazn... (u holgazana, puntualicemos).

    Me.Close()

    Pulsa F5 y cuando pulses en el botn cerrar, se cerrar el formulario.

    Ahora veamos con detalle el cdigo que hemos usado en los dos eventos:

    MsgBox("Hola " & TextBox1.Text)

    En este cdigo tenemos lo siguiente:

    MsgBox que es una funcin o mtodo, (realmente es una clase, como casi todo en.NET), cuya tarea es mostrar en un cuadro de dilogo lo que le indiquemos en el primerparmetro, tambin tiene parmetros opcionales, pero por ahora usemos slo el primeroque es obligatorio.

    En Visual Basic.NET todos los procedimientos que reciban parmetros deben usarse conlos parntesis, esto no era as en las versiones anteriores de VB, por tanto, para indicarle

    que es lo que queremos que muestre, tendremos que hacerlo dentro de los parntesis,en este caso, queremos que se muestre la palabra "Hola " y lo que haya en la caja detexto.

    La palabra Hola (seguida de un espacio) es una constante, es decir siempre ser lapalabra Hola seguida de un espacio, salvo que nosotros queramos que sea otra cosa...pero una vez que el programa est compilado, siempre ser lo mismo... por eso se llamaconstante, porque no cambia... en este caso una constante alfanumrica o de cadena,por eso va entrecomillada, ya que todos los literales o cadenas que queramos usar ennuestros proyectos deben ir dentro de comillas dobles.

    Por otro lado, TextBox1.Text representa el texto que haya en la caja de textos y portanto devolver lo que en l hayamos escrito.

    Por ltimo, para que esas dos cadenas de caracteres, la constante Hola y el contenido dela propiedad Text del control TextBox1, se puedan unir para usarla como una solacadena, usaremos el signo & (ampersand) el cual sirve para eso, para concatenarcadenas de caracteres y hacer que Visual Basic entienda que es una sola.

    Por tanto, si la propiedad Text del control TextBox1 contena la cadena TextBox1, (tal ycomo se muestra en la figura 7), al unir las dos cadenas, resultar una nueva con elsiguiente contenido: "Hola TextBox1" que no es ni ms ni menos que la "suma" de lasdos cadenas que tenamos... (s, ya se que soy un poco pesado con estos y que me estoyrepitiendo, pero t lee y deja que yo piense en cmo hacer que todo esto te entre en tucabecita... vale? gracias por la confianza...)

    En el mtodo del evento Click del botn cerrar hemos escrito: Me.Close()

    22

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    23/137

    Me representa al objeto o clase Form1 (el formulario) y el mtodo Close lo que hace escerrar el formulario, igual que cuando pulsamos en el botn cerrar del formulario.

    Vamos a ver ahora el cdigo completo del evento Click del botn cerrar, as como lospasos que se supone que has realizado para poder aadirlo al formulario, tal y como tedije un poco antes:

    Para aadir un botn nuevo:

    - haz doble click en el elemento Button de la ventana de herramientas que est a laizquierda,

    - selecciona el control recin aadido, (haciendo un click simple)

    - en la ventana de propiedades selecciona la propiedad Text y escribe en ella lapalabra Cerrar,

    - en la ventana de propiedades selecciona la propiedad Name y escribe en ella lapalabra cmdCerrar,

    - haz doble-click en el botn para que se muestre la ventana de cdigo y temostrar:

    Private Sub cmdCerrar_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles cmdCerrar.Click

    EndSub

    - escribe el cdigo para cerrar el formulario: Me.Close()

    Nota: Para que tengas ms fcil buscar las propiedades en la ventana de propiedades,

    puedes hacer que se muestren por orden alfabtico, simplemente pulsando en el botnAZ:

    Figura 8

    Seguramente te estars preguntando porqu algunas imgenes estn en espaol y otrasen ingls, (y si no te lo ests preguntando, te lo va a decir igualmente), es porquealgunas capturas las hice en de la versin en castellano de la Beta 2 de Visual Studio.NET y otras en la versin en ingls, la razn o motivo de esta dualidad?, la particin enla que tena instalado la versin en espaol, la he formateado y cuando quise volver ainstalarla, me dio tantos errores que desist y ahora estoy usando la versin inglesa queya tena instalada en la particin del Windows XP. Si ms adelante vuelvo a instalarla,(cosa que volver a intentar, aunque no con tanta celeridad como me hubiese gustado,ya que al no tener la documentacin en espaol, me da lo mismo que el entorno detrabajo est o no en ingls... cosa que cambiar cuando est la versin definitiva... ocuando me enven la versin con la documentacin en espaol... lo que antes ocurra). Sque estos detalles a lo mejor ni te interesan, pero tena ganas de explicarlo... je, je.

    Para terminar esta segunda entrega, vamos a crear un proyecto igual al que hasta ahorahemos usado, pero con el lenguaje C# (c sharp), para que veas que en algunas cosas esigual de sencillo usarlo, aunque en algunos aspectos es ms estricto que el Visual Basic y

    23

    http://guille.costasol.net/NET/cursoVB.NET/glosarioNET.htmhttp://guille.costasol.net/NET/cursoVB.NET/glosarioNET.htm
  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    24/137

    as de camino te demuestro que no era falso eso que te dije de que en el entornointegrado del Visual Studio .NET podamos tener varios proyectos en varios de loslenguajes soportados por .NET.

    Sin cerrar el proyecto que ya tenemos, despliega el men File/Archivos y selecciona laopcin Add project (Aadir proyecto), del submen que te mostrar selecciona Nuevo

    proyecto... y del cuadro de dilogo que te muestra, (como el de la Figura 1), seleccionadel panel izquierdo Visual C# Pojects y del derecho Windows Application, y pulsa enel botn Aceptar.(en la imagen siguiente te muestro tambin el nombre que yo le hedado: WindowsApplication1cs)

    Figura 9

    Se aadir un nuevo proyecto al Explorador de soluciones, fjate que la extensin delformulario es .cs en lugar de .vb que es la extensin que se usa en los ficheros de VisualBasic .NET.

    Aade los mismos controles que en el formulario de Visual Basic y tambin cmbiale elnombre al botn cerrar.

    Cmbiale el texto que muestra el formulario para que indique esto: Form1 para C#, yasabes, selecciona el formulario y en la ventana de propiedades eliges la propiedad Text.

    Haz doble click en el botn Mostrar y escribe este cdigo en el procedimiento que temuestra:

    MessageBox.Show("Hola " + textBox1.Text);

    Fjate que en lugar de usar MsgBox, aqu hemos usado MessageBox con la particularidadde que hay que especificar el mtodo que queremos usar, en este caso: Show. El restose usa igual que con VB, con la salvedad de que la concatenacin de cadenas se haceusando el signo de suma (+) en lugar del ampersand (&), (eso mismo tambin podemoshacerlo con Visual Basic, pero te recomiendo que uses el signo & en lugar de +

    cuando quieras sumar cadenas de caractes en VB), y otro detalle: todas lasinstrucciones en C# deben acabar en punto y coma (;).

    24

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    25/137

    Esta funcin MessageBox tambin podemos usarla en nuestros proyectos de VB, en lugarde MsgBox, ya que es una clase que pertenece al .NET Framework y todas las clases del.NET Framework podemos usarlas en nuestros proyectos de Visual Basic .NET.

    Ahora haz doble click en el botn cerrar y escribe esto otro: this.Close();

    En C# no se utiliza Me, sino this, que para el caso viene a representar lo mismo: la claseen la que se usa.

    Si pulsas F5, vers que funciona de igual forma que antes... tan igual porque es el mismoproyecto de VB, la razn es porque al tener varios proyectos en el panel del exploradorde soluciones, tenemos que indicarle cual de los proyectos es el que se ejecutar alpulsar F5, para cambiarlo al de C#, selecciona el nuevo proyecto aadido y pulsando conel botn derecho, selecciona del men desplegable: Set as StartUp Project(seleccionarlo como proyecto de inicio o algo parecido en la versin espaola)

    Figura 10

    Pulsa F5 y se ejecutar ese proyecto, te dars cuenta que es el de c# por el caption delformulario, ya que el aspecto es idntico al de VB, otra cosa por la que te dars cuentade que no es el proyecto de VB es cuando pulses en el botn mostrar, el cuadro dedilogo no muestra el nombre de la aplicacin, como ocurra con el proyecto de VB, (verla figura 7), para eso ocurra, tendremos que decirle explcitamente que lo muestre:

    MessageBox.Show("Hola " + textBox1.Text, Application.ProductName);

    Esto mismo tambin es vlido si queremos usar esa funcin desde Visual Basic.

    Creo que lo vamos a dejar aqu.

    Te resumo lo que hasta ahora hemos aprendido: (dice hemos, porque l tambin vaexperimentando mientras te explica, que conste, no sea que te creas que el Guille ha

    nacido sabiendo...)

    - Crear un nuevo proyecto en Visual Basic y en C#

    25

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    26/137

    - Manejar varios proyectos a la vez, incluso de lenguajes distintos.

    - Aadir controles a un formulario e interactuar con ellos mediante eventos.

    - Codificar o decirle qu queremos que haga cuando esos eventos se produzcan.

    - Usar la funcin MsgBox y MessageBox para mostrar cuadros de aviso.

    - Concatenar (unir varias en una) cadenas de caracteres.

    - Uso de la clase Application para mostrar el nombre de la aplicacin.

    - Uso de Me (o this en c#) para representar a la clase actual.

    - Uso de las propiedades de los controles, en este caso la propiedad Text del controlTextBox.

    - Saber manejarte, aunque slo sea un poco, por el entorno integrado del VisualStudio .NET

    - Conceptos tales como: mtodo, propiedad, evento, parmetro, parmetroopcional, de los cuales tienes una explicacin o definicin en la pgina delglosario, sitio al que te mandan los links que has encontrado en algunas de esaspalabras.

    26

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    27/137

    3. Tercera entrega

    En esta tercera entrega del curso de iniciacin a la programacin con Visual Basic .NETvamos a seguir viendo algunas cosillas ms del entorno integrado de Visual Studio .NET,en esta ocasin vamos a hacer que los controles que tengamos en un formulario seadapten de forma automtica al nuevo tamao de la ventana (formulario) as como alos distintos tamaos de fuentes que el usuario de nuestras aplicaciones .NET prefierausar, ya que no todo el mundo usa la misma resolucin que nosotros ni los mismostamaos de letras.

    Hacer esto con las versiones anteriores de Visual Basic era un trabajo duro y algunasveces bastante engorroso, que requera bastante cdigo y casi nunca se lograba lo quequeramos... que no sabes de qu estoy hablando? bueno, no te preocupes que, aunqueahora no sepas la utilidad de todo lo que te voy a explicar pueda tener, en algnmomento lo necesitars y aqu tendrs la explicacin de cmo hacerlo.

    Para entrar en calor, te expondr un caso tpico:

    El tamao de una ventana de Windows, (que al fin y al cabo es un formulario), se puedehacer redimensionable, es decir que el usuario puede cambiar de tamao, en estoscasos, lo adecuado sera que los controles que dicho formulario contenga, se adapten alnuevo tamao de la ventana, con idea de que no queden huecos vacos al cambiar eltamao de la ventana.

    Por ejemplo, si tenemos esta ventana (o formulario):

    Figura 1

    y la agrandamos, por ejemplo para que tenga este otro aspecto:

    27

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    28/137

    Figura 2

    Comprobaremos que la ventana se ha agrandado, pero los controles que hay en ellasiguen teniendo el mismo tamao y la misma posicin que en la ventana anterior.

    Pues bien, la idea de lo que te quiero explicar es que al cambiar el tamao de la ventanase ajusten los controles al nuevo tamao, para que tuviesen este otro aspecto:

    Figura 3

    Para que esto sea posible de forma automtica, hay que hacer unas cuantas asignacionesa los controles, de forma que podamos indicarle qu tienen que hacer cuando el tamaode la ventana vare.

    En este ejemplo, lo correcto sera que:- La caja de texto superior se agrandase hacia el lado derecho.

    28

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    29/137

    - El botn Aadir se moviese hacia el extremo derecho del formulario.

    - La lista se ajustara al ancho y tambin al alto de la ventana.

    Todo esto lo podemos hacer en tiempo de diseo, es decir cuando tenemos el formularioen el entorno integrado o bien lo podemos codificar dentro del propio formulario, dnde

    hacerlo queda a tu criterio, yo te voy a explicar cmo hacerlo en los dos casos y despustu decides cmo hacerlo.

    Antes de empezar a explicarte, vamos a crear un nuevo proyecto.

    Crea un proyecto del tipo Windows, (aplicacin Windows o Windows Application),nmbralo como WinApp3.

    Aade una etiqueta (Label), una caja de textos (TextBox), un botn (Button) y una lista(ListBox)

    Deja los nombres que el IDE ha puesto, salvo para el botn, el cual se llamar cmdAdd.

    (Realmente puedes ponerles los nombres que quieras, pero los que yo voy a usar son:Label1, TextBox1, ListBox1 y cmdAdd)

    Posiciona esos controles tal y como se muestra en la figura 1.

    Selecciona la caja de textos (TextBox1) y en la ventana de propiedades, seleccionaAnchor, vers que por defecto estarn los valores Left y Top, esto quiere decir que lacaja de textos estar "anclada" a la izquierda y arriba, pero ahora vamos a seleccionartambin la derecha. Cuando pulses en la lista desplegable vers que se muestra unaimagen con cuatro lneas, (como la mostrada en la figura 4), dos de las cuales sonobscuras (estn seleccionadas) y las otras dos estn blancas (no seleccionadas), pulsa enla lnea de la derecha, para que se ponga gris, de esta forma estaremos indicndole quetambin se "ancle" a la derecha.

    Figura 4

    Vamos a comprobarlo. Pulsa F5 para ejecutar el proyecto.

    Una vez que se muestre el formulario en ejecucin, agrndalo hacia la derecha, versque la caja de textos se adapta al nuevo tamao. Ahora "achcalo", es decir haz que sehaga ms pequeo hacia la izquierda, incluso haz que no se vea el botn, comprobarsque la caja de texto sigue estando "proporcionalmente" igual de separada de losextremos superior, derecho e izquierdo y se adapta al tamao de la ventana.

    Incluso si intentas hacer la ventana muy pequea, el ancho se quedar justo en la parte

    izquierda de la caja de texto, con el alto puedes hacer que casi desaparezca, (salvo elcaption de la ventana, la barra de arriba, la cual se mantiene).

    Ahora vamos a "anclar" el botn.

    29

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    30/137

    Una vez que hayas terminado de probar... vamos a seguir... valeeee! deja ya dejuguetear con la dichosa ventanita.

    Ahora, de vuelta al IDE, selecciona el botn y en la ventana de propiedades selecciona lapropiedad Anchor.

    En este caso, lo que nos interesa es que el botn se desplace a la derecha, pero que nose haga ms grande.

    Para ello, debes seleccionar las lneas de la derecha y la de arriba.

    Es decir: nclate en la parte de arriba y en la derecha, de forma que si cambiamos eltamao del formulario, el botn se desplazar a la derecha o a la izquierda, pero nocambiar de tamao, como le ocurre al textbox.

    Pulsa F5 y comprubalo. Agranda el formulario, (hacia la derecha) y achcalo, (hacia laizquierda), vers que el botn llegar casi a tocar el lado izquierdo del formulario y all sequedar, no permitiendo que se haga ms pequeo.

    Por ltimo vamos a anclar el listbox... cmo? que quieres intentarlo por tu cuenta?vale... me parece bien...

    Slo decirte que el listbox debe hacerse grande tanto hacia la derecha como hacia laizquierda e incluso cuando se estira el formulario desde la parte inferior, pero en la partesuperior debe mantenerse en la misma posicin.

    Fjate en la figura 3...

    Bueno, espero que lo hayas conseguido. Si no es as, no te preocupes, ahora veremos lasolucin.

    Vamos a complicar un poco ms la cosa y vamos a aadirle otro botn. En este caso,

    dicho botn estar en la parte inferior derecha del formulario, ser el botn cerrar y alpulsarlo hay que cerrar el formulario... recuerdas cmo se hace?

    Exacto! usando Me.Close en el evento Click de dicho botn, el cual yo voy a llamarcmdCerrar.Como te deca, este botn se debera anclar en la parte inferior derecha, por tanto losvalores que hay que asignar en Anchor son precisamente esos: Right y Botton (derecha yabajo).

    Como habrs notado, con el Label1 no hay que hacer nada, ya que por defecto el tamaose ajusta por la derecha y por abajo, por tanto se quedar en la misma posicin...aunque realmente est anclada arriba y a la izquierda, que son los valores por defecto dela propiedad Anchor, por eso no es necesario asignarle nada.

    Ahora vamos a ver cmo hacerlo mediante cdigo... que qu sentido tiene hacerlo porcdigo? pues... esto... bueno, porque puede ser que quieras hacerlo... (je, je, tan pillaoguille!)

    Haz que se muestre el formulario y haz doble-click en l, (no hagas doble-click enninguno de los controles que tiene el formulario, sino en el propio formulario). Cuandoestamos en el IDE y hacemos doble-click en el formulario se muestra el eventoForm_Load que es el que se ejecuta cuando el formulario "se carga" en la memoria, justoantes de mostrarse, por tanto aqu es un buen sitio para hacer algunas "inicializaciones"o asignaciones que nuestro formulario necesite.

    Por ejemplo, podemos limpiar el contenido de la lista, el de la caja de texto, etc. eincluso hacer las asignaciones para que los controles se queden "anclados" en la posicinque nosotros le indiquemos.

    30

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    31/137

    Vamos a ver primero cmo se "declara" este evento, aunque el VB lo haceautomticamente por nosotros, es conveniente verlo para ir aclarando conceptos... quetal vez ahora no necesites, pero en un futuro casi seguro que te hubiese gustado haberlosabido.

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) HandlesMyBase.Load

    Me.TextBox1.Text = ""Me.ListBox1.Items.Clear()

    EndSub

    Lo primero que hay que notar es que Handles es la palabra que le indica al compiladorde Visual Basic .NET qu evento es el que "manipula" o maneja este procedimiento.Siempre lo digo... o lo pienso, que los anglosajones (los que hablan ingls) lo tienenmuchsimo ms fcil que los que no hablamos la lengua de Shakespeare, ya que paraellos eso de Handles es una palabra que tiene sentido y precisamente quiere decir eso"maneja", manipula, se encarga de, etc. con lo cual tienen superclaro que es lo quequiere decir esa palabreja... Esto, (la declaracin del Sub), se encarga de manejar elevento Load del objeto MyBase.

    Aunque tambin hay que decirlo... algunos de esos "hablantes" de ingls, an a pesar detener el lenguaje (idioma) a su favor... no tienen ni repajolera idea de Basic... en fin...ese consuelo nos queda... as que, no te desanimes y tira "pa lante", que "pa trs" nohay que ir ni para coger carrerilla...

    El objeto MyBase se refiere al objeto base del que se deriva el formulario, recuerda queen .NET todo est basado en objetos y en programacin orientada a objetos y todoobjeto se deriva de un objeto bsico o que est ms bajo en la escala de las clases... esdecir, un formulario se basa en la clase System.Windows.Forms.Form y a esa clase esa la que hace referencia el objeto MyBase, mientras que Me se refiere a la clase actual,la que se ha derivado de dicha clase Form o por extensin a cualquier clase, como

    veremos en futuras ocasiones.Cmo? Que has acabado por liarte ms? Que no has captado lo que acabo de decir?

    Pues lo siento por ti... pero no te lo voy a explicar mejor... simplemente djalo estar ypoco a poco acabars por comprenderlo... (je, je, que malo que soy algunas veces!)

    Veamos ahora el cdigo prometido para hacer que los controles se anclen al formulariode forma que se adapten al nuevo tamao del mismo:

    PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) HandlesMyBase.Load

    Me.TextBox1.Text = ""Me.ListBox1.Items.Clear()

    ' Asignar los valores para "anclar" los controles al formulario' El TextBox1 se anclar a Arriba, Izquierda y DerechaTextBox1.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or

    AnchorStyles.Right' El botn Aadir lo har Arriba y a la derecha:cmdAdd.Anchor = AnchorStyles.Top Or AnchorStyles.Right' El listbox lo har en los cuatro vrtices:ListBox1.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or

    AnchorStyles.Right Or AnchorStyles.Bottom' El botn cerrar slo lo har a la derecha y abajocmdCerrar.Anchor = AnchorStyles.Right Or AnchorStyles.Bottom

    EndSub

    Para ir terminando la presente entrega, vamos a ver lo otro que coment al principio,

    que el formulario y los controles se adapten tambin a otros tamaos de fuentes, no alos que nosotros tenemos en nuestro equipo... ya que hay gente que por necesidadestienen que poner tamaos de fuentes ms grandes e incluso ms pequeas... que

    31

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    32/137

    tambin hay quin tiene un monitor de 19 o 21 pulgadas y lo mismo tienen que usarletras de tamaos ms pequen...

    La propiedad que hace eso posible es AutoScale, esta propiedad slo est disponible enlos formularios y por defecto tiene el valor True (verdadero), por tanto los formularios,sin necesidad de que hagamos nada, se auto ajustarn al tamao de las fuentes.

    Esto no lo he comprobado, pero me fo de lo que dice la documentacin, (aunque est eningls)

    Otra cosilla interesante que tienen los formularios es la propiedad AutoScroll. Siasignamos el valor True (verdadero) a esta propiedad, hacemos que cuando el formulariose haga muy pequeo o muy estrecho, se muestren unas barras de desplazamiento(scrolls) para que pulsando en ellas podamos ver el contenido del mismo.

    Por ejemplo si no hubisemos "anclado" nuestros controles, al hacer el formulario msestrecho se mostraran unas barras de desplazamiento para que podamos ver loscontroles que estn contenidos en el formulario.

    Figura 5

    Si quieres probarlo, quita el cdigo que hemos aadido, o comntalo todo, para elloselecciona todas las lneas que quieres comentar, las que asignan los valores a lapropiedad Anchor y en el men Edicin, selecciona Avanzado y Comentar Seleccin,tambin puedes usar las teclas: Ctrl+K seguidas de Ctrl+C, (yo tengo las opciones de

    Comentar Seleccin y Quitar los comentarios puestas en la barra de herramientas, yaque de vez en cuando las utilizo para hacer alguna que otra prueba y no tener que borrarel texto que quiero quitar)

    32

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    33/137

    Figura 6

    Lo dicho, comenta ese cdigo y aade el siguiente, ejecuta la aplicacin y prubalohaciendo la ventana ms pequea, tal y como te muestro en la figura 5.

    ' Asignamos True a la propiedad AutoScroll y dejamos los controles' como estn por defecto:Me.AutoScroll = True' El TextBox1 se anclar a Arriba, Izquierda y DerechaTextBox1.Anchor = AnchorStyles.Top Or AnchorStyles.Left' El botn Aadir lo har Arriba y a la derecha:cmdAdd.Anchor = AnchorStyles.Top Or AnchorStyles.Left' El listbox lo har en los cuatro vrtices:ListBox1.Anchor = AnchorStyles.Top Or AnchorStyles.Left' El botn cerrar slo lo har a la derecha y abajocmdCerrar.Anchor = AnchorStyles.Top Or AnchorStyles.Left

    Todas estas cosas ya nos hubiese gustado tenerlas en las versiones anteriores de Visual

    Basic, ya que para hacerlo o bien te tenas que "comer" el coco o bien te tenas que crearun control que hiciera ese trabajo...

    33

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    34/137

    Slo comentarte que los Ors que se estn utilizando sirven para "sumar" y el resultadosera el mismo que si usramos el signo de suma, pero la razn de usar Or es porque loque queremos hacer es una suma de bits... realmente da lo mismo usar la suma que Oren este caso, pero... dejemos el Or que es lo apropiado... y no me preguntes porqu...ya que, aunque no te hayas enterado, te lo acabo de explicar... je, je.

    UF! vaya entrega ms larga y en resumidas cuentas qu es lo que has aprendido?

    S... claro que no ha sido en vano Te crees que iba a gastar yo tanto tiempo paraexplicarte algo que no sirve para nada...?

    De todas formas, vamos a ver algo de cdigo para que no se te quede mal sabor deboca.

    El cdigo que te voy a mostrar har lo siguiente:

    - Al pulsar en el botn Aadir, se aadir a la lista lo que hayas escrito en la cajade textos.

    - Al pulsar Intro ser como si hubieses pulsado en el botn Aadir.

    - Al pulsar Esc es como si hubieses pulsado en el botn Cerrar.

    - Al pulsar en uno de los elementos de la lista, ste se mostrar en la caja detextos.

    - Al seleccionar un elemento de la lista y pulsar la tecla Supr (o Del si tu tecladoest en ingls), dicho elemento se borrar de la lista, pero se quedar en la cajade textos, ya que al seleccionarlo para poder pulsar la tecla suprimir se habrmostrado...

    Veamos cmo hacer esto.

    Lo de pulsar en Aadir y hacer algo, est claro: simplemente codificamos lo que hayaque codificar en el evento Click del botn cmdAdd. Para que nos muestre ese evento,simplemente haz doble-click en el botn y el VB te mostrar el evento en cuestin, aadeeste cdigo y ahora te lo explico:

    PrivateSub cmdAdd_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles cmdAdd.Click

    ListBox1.Items.Add(TextBox1.Text)EndSub

    Lo que te voy a explicar es lo que est dentro del evento Click, ya que lo de Handles te lohe explicado hace un rato.

    Si te has fijado en el cdigo que te mostr del evento Form_Load, seguramente habrsvisto que tenamos:

    Me.ListBox1.Items.Clear()

    Me hace referencia a la clase actual, es decir al formulario.

    Items son los elementos que tiene el objeto ListBox

    Clear es un mtodo de Items que se encarga de limpiar los elementos de la lista, esdecir: los borra.

    Por tanto esa lnea lo que hace es borrar los elementos del listbox.

    Ahora lo que necesitamos no es borrarlos, sino aadir nuevos elementos a la lista, portanto, como ya sabemos que Items es el sitio en el que se guardan los elementos de lalista, lo nico que tenemos que saber es cmo se aaden nuevos elementos a dicha

    34

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    35/137

    lista? y para eso estoy yo aqu: para contrtelo; pero como me imagino que eres losuficientemente observador, te habrs "percatado" que Add es lo que necesitamos paraaadir elementos a la lista de un ListBox. Si no eres tan observador (u observadora)como yo me crea, te lo explico un poco:

    Para aadir elementos a un listbox, se usa el mtodo Add de Items.

    Ya est dicho.

    En la coleccin Items se puede aadir lo que queramos, cualquier objeto, en este caso loque aadimos es el contenido (el texto) del TextBox, por eso es por lo que hacemos:

    Items.Add(TextBox1.Text)

    Aadimos a Items el contenido de la caja de textos.

    3.1. Qu es una coleccin?

    Realmente es una lista de objetos o elementos que estn agrupados en un objeto, en

    este caso un objeto coleccin (o Collection), aunque en este caso Items no es del todo loque en el VB de antes era una coleccin, ya que en vb.NET existen varios tipos decolecciones o arrays (arreglos?), pero no vamos a complicarnos la vida... Items es unacoleccin de elementos, es decir los elementos estn guardados en una "lista" de datos.

    En su momento veremos los diferentes tipos de colecciones o listas.

    Veamos ahora cmo saber cual es el elemento que se ha seleccionado de la lista y cmoasignarlo al TextBox:

    Private Sub ListBox1_SelectedIndexChanged( ByVal sender As System.Object,ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

    ' Cuando pulsamos en un elemento de la lista...

    With ListBox1TextBox1.Text = .GetItemText(.SelectedItem)EndWith

    EndSub

    Fjate que en este caso no es el evento Click, como era de esperar (y como es en lasversiones anteriores de VB, incluso como era en la Beta 1 de vb.NET), sino que el eventoen cuestin es SelectedIndexChanged.

    Ya te he comentado que lo que podemos aadir a los elementos del listbox son objetos,pero lo que a nosotros nos interesa mostrar es el "texto" de dicho elemento, ya que nonos interesa otra cosa, ms que nada porque lo que hemos aadido son textos y noobjetos... aunque, como ya te he comentado en otras ocasiones TODO lo que se maneja

    en .NET son objetos, incluso las cadenas de textos son objetos... pero... en fin... dejemoslas cosas as por ahora.

    Lo que en este evento hacemos es asignar a la caja de textos el texto del elementoseleccionado: la propiedad SelectedItem representa al elemento seleccionado yGetItemText es una funcin, (o mtodo), que devuelve el texto (o la representacin enformato texto del elemento indicado dentro de los parntesis).

    Este evento se consigue haciendo doble click en el listbox, pero...

    3.2. Cmo hacemos para escribir cdigo en otroseventos?

    Para poder usar otros eventos de un objeto, muestra la ventana de cdigo, de la listadesplegable de la izquierda, selecciona dicho objeto y en la lista desplegable de laderecha elige el evento que quieras usar, en nuestro prximo ejemplo ser el evento

    35

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    36/137

    KeyPress, tal y como se muestra en la figura 7, los eventos se distinguen por el rayo quese muestra a la izquierda del nombre del elemento...

    Figura 7

    Como dato curioso, en los formularios de C# se pueden seleccionar los eventos en lamisma ventana de propiedades del formulario u objeto en cuestin, incluso a veces

    ocurre que en vb.NET se muestra ese smbolo en la mencionada ventana de propiedades,aunque no siempre y no s exactamente porqu se muestra... pero espero y confo queen la versin definitiva de vb.NET dicha opcin estar disponible, para facilitarnos un

    poco ms el trabajo. A da de hoy (26/Oct/2001), an no he visto la Release Candidate1, pero segn he ledo en las pginas de Microsoft no se diferencia mucho de la Beta 2,(que es la que estoy usando en estos momentos), as que... me da mala espina esto de

    que an no est la opcin de elegir eventos en la ventana de propiedades, pero

    esperemos y confiemos que algn da est.

    Nota del 24/Dic/2002:Pues ni est en la versin final ni tampoco estar en la versin 2003

    Al seleccionar ese evento, se mostrar el siguiente cdigo:

    PrivateSub ListBox1_KeyDown(ByVal sender AsObject, ByVal e AsSystem.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyDown

    EndSub

    Por qu he elegido KeyDown y no KeyUp o incluso KeyPress?

    Porque la tecla Supr (Del) es una tecla especial y no se detecta en el evento KeyPress,poda haber usado KeyUp tambin, pero ese evento se produce cuando se suelta latecla... (que sera lo lgico), pero yo siempre tengo la costumbre de interceptar esaspulsaciones en el evento KeyDown (cuando se empieza a pulsar la tecla) y es por esemotivo que voy a codificar el tema este de borrar un elemento de la lista en ese evento...cosas mas.

    Este sera el cdigo a usar para eliminar el elemento que est seleccionado:

    PrivateSub ListBox1_KeyDown(ByVal sender AsObject, ByVal e As

    System.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyDownIf e.KeyCode = Keys.Delete ThenWith ListBox1

    .Items.Remove(.SelectedItem)

    36

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    37/137

    EndWithEndIf

    EndSub

    Es decir, comprobamos si la tecla en cuestin es la de suprimir, si es as, eliminamos elelemento que est seleccionado.

    Recuerda que SelectedItem nos indica el elemento que actualmente est seleccionado yusando el mtodo Remove de la coleccin Items, lo quitamos de la lista.

    As de fcil.

    Pero como no estoy dispuesto a terminar an esta tercera entrega... para que teempaches y no te entre el mono cuando veas que tardo en publicar la siguienteentrega... vamos a permitir mltiple seleccin de elementos y vamos a ver cmoborraramos los elementos que estn seleccionados.

    Cuando permitimos mltiple seleccin en un ListBox, podemos seleccionar un elemento ovarios.Si son varios, estos pueden estar consecutivos o no.

    Por ejemplo, si seleccionas un elemento de la lista y manteniendo pulsada la tecla Shift(maysculas), pulsas en otro que est ms arriba o ms abajo, se seleccionan todos loselementos intermedios, (esto deberas saberlo, ya que es una cosa habitual deWindows); tambin puedes seleccionar elementos no contiguos, si pulsas la tecla Controly con el ratn vas haciendo click en elementos no consecutivos.

    Lo primero que necesitamos saber es:

    Cmo hacer que un ListBox permita mltiple seleccin? ya que por defecto slo sepuede seleccionar un elemento a un mismo tiempo.

    Para que un ListBox permita mltiple seleccin de elementos, hay que asignar a lapropiedad SelectionMode el valor MultiExtended, por tanto selecciona el ListBox y enla ventana de propiedades, asigna dicho valor a la propiedad SelectionMode.

    Ahora tenemos que hacer ms cosas cuando se detecta la pulsacin de la tecla suprimiren el evento KeyDown, ya que tenemos que saber qu elementos estn seleccionadospara poder borrarlos.

    Lo primero que tenemos que hacer es recorrer todos los elementos del ListBox parasaber si est o no seleccionado, pero ese recorrido hay que hacerlo desde atrs haciaadelante... por qu? porque si lo hiciramos desde el principio de la lista, al eliminar unelemento de dicha lista, el nmero de elementos variara y tendramos problemas cuandollegsemos al final, ya que no ser el mismo nmero de elementos despus de haber

    borrado alguno... mientras que al recorrer los elementos desde el final hacia adelante, noimportar que borremos alguno del final, ya que el siguiente que comprobaremos estarms al principio que el recin borrado y no tendremos problemas... s que no te hasenterado, pero no importa, confa en mi, (que remedio te queda!), y ya tendrs tiempode comprobarlo por tu cuenta.

    Veamos primero el cdigo que habra que usar y despus lo comento.

    PrivateSub ListBox1_KeyDown(ByVal sender AsObject, ByVal e AsSystem.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyDown

    If e.KeyCode = Keys.Delete Then'Borrar las palabras seleccionadas del listboxDim i AsInteger'With ListBox1

    For i = .SelectedItems.Count - 1 To 0 Step -1.Items.Remove(.SelectedItems.Item(i))

    37

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    38/137

    NextEndWith

    EndIfEndSub

    La parte del If e.KeyCode = Keys.Delete Then ya la vimos antes, aunque no teexpliqu qu es lo que significa esto... bueno que es lo que significa si que te lo dije, lo

    que no te expliqu es porqu eso sirve para saber "qu es lo que significa".

    Slo decirte que IF... THEN... sirve para hacer comparaciones o para comprobar si una oms cosas estn relacionadas de alguna forma, en este caso, queremos saber si el valorde e.KeyCode, que es la tecla que has pulsado, es igual a Keys.Delete, ste ltimo valores un valor "predefinido" que representa a la tecla suprimir.

    Por tanto, si la tecla que hemos pulsado es igual a la tecla suprimir, entonces hacer loque viene a continuacin...todo lo que viene a continuacin?

    No, slo hasta que encontremos End If, pero de esto ya hablaremos en otra ocasin.

    Dim i As Integer esto le indica al VB que vamos a usar un nmero y que ese nmero loguarde en la variable i, de esto tambin tendrs ocasin de enterarte mejor, por ahoradejmoslo as.

    With ListBox1 el With se utiliza para simplificarnos las cosas y lo que viene a significares que donde se tendra que usar el objeto ListBox1, se ponga un punto... ms omenos... ahora veremos cmo se escribira el cdigo sin usar el With ListBox1.

    Qu? Te ests liando? S? Pues no desesperes, que aunque todo esto sea un folln,dentro de un par de aos acabars por comprenderlo... je, je... no, que no... que no sertanto tiempo, confa en el Guille...

    For i = .SelectedItems.Count - 1 To 0 Step -1 con esto le estamos indicando que use

    la variable i para ir guardando los valores que resulten de contar desde el nmero deelementos que hay seleccionados hasta cero. El Step -1 se usa para contar hacia atrs,(de mayor a menor), pero eso, al igual que el For, tambin lo veremos ms adelante.

    SelectedItems es una coleccin en la cual estn los elementos que hay seleccionados enel ListBox.

    Recuerdas la coleccin Items? Pues en este caso, SelectedItems son los elementosseleccionados y para que lo sepas, todas las colecciones suelen tener un mtodo Countque nos dice el nmero de elementos que hay en ellas.

    .Items.Remove(.SelectedItems.Item(i)) Esto es parecido a lo visto antes, es decir,elimina el elemento que est seleccionado y que ocupa la posicin i dentro de la

    coleccin de elementos seleccionados.

    Esto tambin lo podramos haber escrito de esta otra forma:

    .Items.Remove(.SelectedItems(i)) que para el caso es lo mismo.

    En su momento veremos porqu.

    Por ahora qudate con la copla de que Item es la propiedad o mtodo predeterminado dela coleccin SelectedItems.

    Next indica que contine el bucle o la cuenta que estamos llevando con la variable i.

    De esta forma, al haber usado el Step -1, lo que hacemos es contar hacia atrs y si porejemplo i vala 3, al llegar aqu, valdr 2, es decir restamos 1: el valor indicado en Step

    End With indica hasta dnde llega el tema ese del With ListBox1

    38

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    39/137

    End Ifle dice que hasta aqu llega la comprobacin que hicimos de si la tecla pulsada erala de suprimir.

    Menudo embrollo!

    De verdad piensas que no acabars nunca aprendiendo?

    Date una oportunidad y de paso dmela a mi tambin... y confa, que dentro de pocotodo esto te parecer una tontera.

    Vamos a ver qu significa eso de With.

    Si no hubisemos usado el With, ese cdigo tendramos que haberlo escrito de estaforma:

    For i = ListBox1.SelectedItems.Count - 1 To 0 Step -1ListBox1.Items.Remove(ListBox1.SelectedItems.Item(i))

    Next

    Es decir, tendramos que haber escrito el nombre del objeto en cada una de las partes

    correspondientes.

    Por tanto, si usamos With Objeto, podemos sustituir a Objeto por el punto, siempre ycuando ese punto, (y la propiedad o mtodo correspondiente), est dentro del par With...End With.

    Seguramente preferirs usarlo de esta otra forma, ya que se ve "claramente" que es loque estamos haciendo, pero con el tiempo te acostumbrars a usar With/End With, entreotras cosas porque yo los uso bastante y al final ser como de la familia...

    Y ahora s que hemos terminado... por fin!

    (Pst! Guille... se te ha olvidado explicar lo de que al pulsar Intro sea como si hubiese

    pulsado en el botn Aadir y al pulsar Esc como si hubiese pulsado en Cerrar)

    Pues s... en que estara pensando?

    Por suerte para tus neuronas, eso es ms fcil de asimilar... je, je, je.

    Para que un botn intercepte la tecla Intro, hay que decirle al VB que ese botn es elbotn de aceptar, lo mismo ocurre con la "captura" de la tecla ESC, pero en lugar de serel botn por defecto, ser el botn de cancelacin.

    Selecciona el formulario y en la ventana de propiedades busca la propiedadAcceptButton, habr una lista desplegable con los botones disponibles en el formulario,(tal y como te muestro en la figura 8), selecciona cmdAdd y ya est.

    Ahora al pulsar Intro es lo mismo que si pulsaras en el botn Aadir.

    Figura 8

    39

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    40/137

    Lo mismo para el de cancelar, pero en esta ocasin, la propiedad en cuestin es:CancelButton.

    Por tanto, selecciona de la lista desplegable el botn cmdCerrar y as al pulsar Esc secerrar la aplicacin.

    Nota: En las versiones anteriores de VB, esas propiedades pertenecan al propio botn,es decir, eran propiedades del objeto CommandButton. Aunque, al menos para m, esms lgico que estn en el formulario, entre otras cosas porque slo puede haber unbotn de aceptar y uno de cancelar.

    Prubalo y as lo comprobars.

    Escribe algo en la caja de textos y pulsa Intro, vers que se aade a la lista, despuspulsa ESC y vers que se cierra el formulario o ventana con lo que se da por terminada laaplicacin.

    Ahora s. Ya hemos terminado por hoy.

    La prxima vez veremos con ms detalles qu es eso de las variables y puede que

    incluso veamos algo de lo que ya hemos visto aqu, pero con ms detalles y mejorexplicado. Pero eso ser en la prxima entrega, que esta ya est bien servida.

    Slo me queda hacerte un "pequeo" resumen de lo que hemos visto en esta entrega:

    - Usar la propiedad Anchor de los controles para que se ajusten automticamente alcambiar el tamao del formulario en el que estn contenidos.

    - Usar la propiedad AutoScale de los formularios para que los controles se ajustenal tamao de la fuente predeterminada de Windows.

    - Usar la propiedad AutoScroll de los formularios para mostrar las barras dedesplazamiento (scroll) cuando el formulario se hace ms pequeo y alguno de loscontroles queda oculto.

    - Mencin y pequea descripcin/explicacin de las palabras MyBase, Me, Or, With,If, For...

    - Tambin hemos visto, aunque sea de pasada una variable para usarla en un bucleFor.

    - Qu es una coleccin, as como los mtodos Clear, Count, Add, Remove e Item delas colecciones.

    - Cmo asignar a un ListBox el contenido de un TextBox y viceversa:

    - Cmo asignar a un TextBox el contenido del elemento seleccionado de un ListBox.

    - Cmo saber cual es el elemento seleccionado de un ListBox.

    - Cmo hacer que un ListBox permita mltiples selecciones de elementos.- Cmo saber cuantos y cuales son los elementos que estn seleccionados en el

    ListBox.

    - Cmo eliminar el elemento que est actualmente seleccionado y

    - Cmo eliminar todos los elementos que estn seleccionados.

    - Cmo hacer que un botn sea el botn predeterminado de aceptar de unformulario.

    - Cmo hacer que un botn sea el botn predeterminado de cancelar de unformulario.

    - Cmo seleccionar cualquier evento para un control determinado.

    - Eventos vistos: Form_Load, Click, KeyDown, SelectedIndexChanged

    40

  • 8/7/2019 Programacin en Visual Basic.NET [www.e-book-tutoriales.blogspot.com]

    41/137

    4. Cuarta entregaComo te dije en la entrega anterior de este curso de iniciacin a la programacin conVisual Basic .NET, en esta ocasin vamos a ver qu es eso de una variable y algunosotros conceptos que necesitars para poder tomarte esto de programar con vb.NET un

    poco ms en serio... bueno, tampoco hace falta que sea demasiado en serio,simplemente que te enteres de las cosas y sobre todo que sepas aplicarlas en elmomento en que sea oportuno o necesario... (que bien ta quedao ezo Guille)

    4.1. Variables, constantes y otros conceptosrelacionados

    El concepto o descripcin de lo que es una variable es fcil de asimilar, si es que hasestudiado en el colegio, al menos hace unos diez aos o ms, ya se explicaba, pero hace25 30 aos, por poner una cifra, a mi no me lo explicaron... o lo mismo el "profe" loexplic, pero yo estara pensando en las altabacas de Rio Seco, (otras cosas)... como

    siempre... que lo que es prestar atencin en clase, no era lo mo... (as te va Guille), enfin... no tomes malos ejemplos y aplcate... al menos en esta "clase", en las otras... de tidepende... no te voy a echar el sermn de que debes estudiar para que en el futuro...eso lo dejo para otros...

    A lo que vamos... el concepto de constante, ya lo vimos hace un par de entregas, unaconstante es algo que permanece inalterable, por eso se llama constante, porquesiempre es constante: inalterable, siempre es lo mismo...

    Sin embargo una variable puede alterarse, es decir, se le puede cambiar el valor quetiene... por eso se llama variable, como el estado anmico que algunas veces tenemos,hoy estamos de buenas y maana lo mismo tenemos los cables cruzados y no hay Diosque nos pueda dirigir la palabra... en fin... con una tila se suele solucionar... pero... no esde eso de lo que se trata cuando hablamos de variables en esto de la programacin, yasea en vb.NET o en cualquier otro lenguaje.

    Las variables son "nombres" que pueden contener un valor, ya sea de tipo numricocomo de cualquier otro tipo.

    Esos nombres son convenciones que nosotros usamos para facilitarnos las cosas, ya quepara los ordenadores, (o computadores, segn te guste o ests acostumbrado allamarlos), una variable es una direccin de memoria en la que se guarda un valor o unobjeto, te vuelvo a recordar por ensima vez que en .NET todo es un objeto.

    Existen distintos tipos de valores que se pueden asignar a una variable, por ejemplo, se

    puede tener un valor numrico o se puede tener un valor de tipo alfanumrico o decadena, (string para los que inventaron esto de los lenguajes de programacin), pero encualquier caso, la forma de hacerlo siempre es de la misma forma... al menos en .NET yano hay las distinciones que antes haba en las versiones anteriores de Visual Basic... novoy a entrar en detalles, pero si has trabajado anteriormente en VB con objetos, sabrsde que estoy hablando.

    Por ejemplo si queremos guardar el nmero 10 en una variable, haremos algo comoesto:

    i = 10

    En este caso i es la variable, mientras que 10 sera una constante, (10 siempre vale 10),

    la cual se asigna a esa "posicin" de