Manual de Visual Basic Net(Muy able

Embed Size (px)

Citation preview

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    1/173

    1

    Palabra Descripcin

    A

    Aclaracin sobrevariables ymtodos estticoso compartidos

    Se dice que una variable o un mtodo es esttico(Shared en VB / static en C#) cuando estcompartido, es decir, no forma parte de ningunainstancia de la clase.Las variables y mtodos estticos pertenecen al tipoen el que se declara y para usarlas simplemente hayque indicar la clase (o tipo) seguida (por un punto)del nombre de la variable o mtodo.En el caso de VB todos los miembros de un mdulo(Module) son estticos (estn compartidos) y no esnecesario indicar el nombre del mdulo para accedera ellos.

    mbito /Accesibilidad

    El mbito es lo que indica el nivel de visibilidad (oaccesibilidad) de un elemento, ya sea una variable,procedimiento o clase.Los niveles de accesibilidad pueden ser Private,Public, Friend, Protected o Protected Friend.

    En la documentacin de Visual Studio .NET, mbitoes el nivel de visibilidad que puede tener, ya sea anivel de bloque, procedimiento, mdulo o espacio denombres.Y la accesibilidad es la "visibilidad" de dicho

    elemento, si es pblico, privado, etc.

    Array(matriz)

    Los arrays (o matrices) son un tipo de variable quepermiten tener ms de un elemento, (o valor en suinterior), a los que se pueden acceder mediante unndice.Un array tambin es el tipo en el que se basan todaslas matrices o arrays.

    Assenbly(ensamblado)

    Bsicamente un ensamblado es un programa (EXE) oun componente (DLL), en el que adems del cdigo

    compilado tiene un manifiesto o definicin de que eslo que contiene dicho ensamblado: tipos de datos,dependencias, versin, etc.

    B

    C

    Clases / Objetos(tipos)

    Prcticamente todo lo que manejemos en elentorno .NET es una clase u objeto, de hecho todaslas clases derivan de una clase u objeto bsico: laclase System.Object

    Clases abstractas Son clases que exponen un interface el cual hay que

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    2/173

    2

    usar en las clases que se hereden de dicha claseabstracta.

    Colecciones

    Serie de datos que estn guardados en una lista,array (o matriz) o una coleccin propiamente dicha y

    que permite interactuar con los elementos de lasmismas, pudiendo aadir, recuperar, eliminar uno otodos, saber cuantos elementos hay, etc.

    Common LanguageRuntime(CLR)

    El CLR (Common Language Runtime) es el motor entiempo de ejecucin del .NET Framework, es decir laparte del "entorno" que se encarga de ejecutar elcdigo de los lenguajes del .NET Framework.

    Constante

    Valores numricos o de cadena que permanecenconstantes, sin posibilidad de cambiar el valor que

    tienen.En caso de que necesitemos cambiar el valor,usaremos las variables.

    D

    E

    Encapsulacin

    La posibilidad de ocultar el cdigo usado paraimplementar un mtodo o cualquier otroprocedimiento o funcin de forma que lo nico queinterese sea el interface expuesto por la clase uobjeto.

    Enumeraciones(Enum)

    Las enumeraciones son una serie de valoresconstantes (de tipo numrico), que de alguna formaestn relacionadas entre s.A diferencia de las constantes normales, una variabledeclarada como una enumeracin, puede tomarcualquiera de los valores indicados en laenumeracin.

    Evento

    Los eventos son procedimientos (SUB) que seejecutan normalmente cuando el sistema Windows

    los provoca, por ejemplo, al hacer click en unaventana o en cualquier objeto de la ventana, cuandocambiamos el tamao de una ventana, cuandoescribimos en una caja de textos, etc.

    Expresiones

    Una expresin es una secuencia de operadores yoperandos que describe un clculo. Normalmenteuna expresin se evala en tiempo de ejecucin.Existen expresiones numricas y alfanumricas o decaracteres.

    ExpresionesLgicas Las expresiones lgicas son expresiones pero cuyoresultado es un valor "lgico" (verdadero o falso).

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    3/173

    3

    Este tipo de expresiones se usan normalmente coninstrucciones que normalmente necesitan un valorverdadero (true) o falso (false)

    F

    Formulario(forma/ventana)

    Un formulario es una ventana de Windows la cualusaremos para interactuar con el usuario, ya que endicha ventana o formulario, estarn los controles ydems objetos grficos que mostraremos al usuariode nuestra aplicacin.Los formularios tambin son llamados "formas" oForms en su nombre en ingls.

    Function(Funcin)

    Los procedimientos Function son como las funcionesdel VB .NET, es decir, realizan una tarea, al igual queun Sub, pero siempre devuelven un valor, como

    resultado del cdigo que se ha ejecutado en suinterior.A las funciones no se les puede asignar valores, adiferencia de las Propiedades.

    G

    H

    Handles

    En VB.NET se usa Handles, seguido del nombre delevento, para indicar qu evento es el que se manejaen el procedimiento indicado.El formato suele ser:Sub Nombre(parmetros) Handles Objeto.Evento

    Herencia

    La posibilidad de que una clase herede laspropiedades y mtodos de otra clase de forma quese puedan usar con la nueva clase de igual formaque si se hubiesen escrito directamente en ella.

    I

    Instancia

    Para poder usar una clase, hay que crear unainstancia del mismo.

    Es decir, debemos declarar una variable y a esavariable asignarle el objeto o clase en cuestin paraque podamos usarlo.Es como si tuvisemos que darle vida al objeto parpoder usarlo.La instanciacin de las clases se hace usando NewLaClase

    InterfaceSe dice que las propiedades y mtodos expuestospor una clase (tipo) forman el interface de la misma.

    Interface /Implements

    Los interfaces a diferencia de las clases es que nohay que escribir cdigo para los mtodos opropiedades que expone, simplemente se indica la

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    4/173

    4

    "declaracin".Usando Implements, se pueden usar esas interfacesen las clases, aunque hay que escribir el cdigo decada mtodo o propiedad implementado.

    J, K, L

    M

    Me(this)

    La palabra clave (o instruccin) Me hace referencia ala clase actual.Por ejemplo Me.Width se refiere a la propiedad Widthde la clase actual.En C# en lugar de Me es this.

    MtodoUn procedimiento (Sub, Function -funcin) que seusa para realizar una tarea especfica en la clase omdulo.

    Miembros

    Los miembros de una clase (o tipo) son los mtodos(Sub o Fucntion, las propiedades, enumeraciones,constantes, campos, etc. que se han declarado endicho tipo.

    Miembroscompartidos

    Son miembros de una clase que pueden seraccedidos sin necesidad de crear una instancia de laclase. Se declaran usando la instruccin Shared(static en C#).

    Miembros deinstancia

    Son miembros de una clase que slo pueden seraccedidos al crear una instancia (objeto) de la claseen la memoria.

    Mdulo

    Los mdulos, al igual que las clases, son "espacios"en los cuales se incluyen declaraciones de variables,procedimientos, funciones, etc.Pero a diferencia de las clases, el cdigo contenidoen un mdulo siempre est disponible de formadirecta, sin necesidad de crear una "instancia" dedicho mdulo.

    MyBase

    La palabra clave MyBase se comporta como la clasede la que ha derivado la clase actual, es decir si unaclase deriva de una (o hereda a otra) clase, MyBasese referir a dicha clase base, de esta forma esposible acceder a los mtodos, propiedades yeventos de la clase de la que se deriva (o hereda) laclase actual.

    N

    Namespace

    (espacio denombres)

    Namespace es una forma de agrupar clases (tipos de

    datos), enumeraciones, etc. que estn relacionadasentre s.

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    5/173

    5

    De forma que estn agrupados segn el tema quequieran abarcar los tipos definidos en l.

    O

    P

    Parmetro

    Los mtodos o propiedades pueden tenerparmetros, (uno o varios), los cuales le indicarnlos valores que deben usar para la tarea que deberealizar.Por ejemplo, un mtodo Contar podra recibir unparmetro con el valor de las veces que tiene quecontar.

    Parmetrosopcionales

    Algunos procedimientos que aceptan parmetros,pueden tener tambin parmetros opcionales, loscuales, como su nombre indica, pueden o no serincluidos en la llamada al procedimiento.Los parmetros opcionales tienen unos valores pordefecto, el cual se usar en caso de que no seespecifique.

    Polimorfismo

    La posibilidad de usar en clases diferentespropiedades o mtodos con el mismo nombre deforma que cuando se usen no nos preocupe a queclase pertenece.Por ejemplo el objeto bsico del que derivan todaslas clases de .NET tiene una propiedad llamada

    ToString, sta propiedad estar implementada deforma diferente en diferentes clases, pero nosotrosla usaremos de la misma forma, sin importarnos queobjeto estemos usando.

    ProcedimientoUn mtodo, funcin o propiedad de una clase omdulo.

    ProgramacinOrientada aObjetos (OOP /POO)

    Una forma de programar basada en la reutilizacinde cdigo mediante herencia, encapsulacin ypolimorfismo.

    Property(Propiedad)

    A diferencia de los mtodos, las propiedades se usanpara "configurar" la forma que tendr la clase.Algunas veces es difcil diferenciar un mtodo de unapropiedad, pero por convencin los mtodos realizantareas. Por ejemplo, el ancho de un objeto es unapropiedad, mientras que mostrar el objeto serealizara con un mtodo.A las Propiedades se les puede asignar valores ypueden devolverlos, (como las funciones). Aunquetambin pueden existir propiedades de solo lectura,

    (solamente devuelven valores), o de solo escritura,(slo se les puede asignar valores, pero no los

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    6/173

    6

    devuelven).

    Q, R

    S

    Sobrecarga(Overload)

    Se dice que un mtodo est sobrecargado cuandoexisten distintas versiones de dicho mtodo en laclase.Por ejemplo mtodos con el mismo nombre quereciban parmetros de distintos tipos.

    SubUn procedimiento SUB es como una instruccin, esdecir, realiza una tarea (ejecuta el cdigo que hayaen su interior), pero no devuelve un resultado.

    T, U

    V

    Variable

    Son "espacios" de memoria en la que se almacenaun valor. Se usarn para guardar en memoria losvalores numricos o de cadena de caracteres quenuestro programa necesite.Usa este link para ver los distintos tipos de datos.

    Variables estticas

    Son variables definidas en los procedimientos con lainstruccin Static en lugar de con Dim, quemantienen el valor entre llamadas a eseprocedimiento. A diferencia de las variablesnormales, las cuales pierden el valor una vez que setermina el procedimiento.

    Introduccin:

    Debido a que la nueva versin de Visual Basic no es slo una mejora con respecto alas versiones anteriores, sino que cambia mucho, tanto como si de otro lenguaje deprogramacin se tratara, creo que se merece que se explique de forma ms omenos fcil de comprender para que cualquiera que se decida a elegirlo como sulenguaje de programacin lo tenga, valga la redundancia, fcil.Tan fcil como permitan las circunstancias, y adems, (para que esto de estudiarno resulte algo tedioso), tan ameno como me sea posible, ya que las cosas sepueden explicar de muchas formas y, a pesar de parecer que peco de falta demodestia, estoy seguro que este curso de iniciacin a la programacin con VisualBasic .NET te va a resultar ameno y fcil de comprender... seguro!Pero no slo vas a aprender a programar con VB.NET, sino que al estar "basado" enel .NET Framework, conocers lo suficiente de este marco de desarrollo quepodrs atreverte con otros lenguajes .NET, tales como c#, ya que al fin y al cabo,el corazn de los lenguajes .NET es el .NET Framework.

    Para ir aclarando ideas, veamos algunos conceptos que habr que tener clarosdesde el principio:Visual Basic .NET usa una jerarqua de clases que estn incluidas en el .NETFramework, por tanto conocer el .NET Framework nos ayudar a conocer al propio

    http://www.mundoprogramacion.com/NET/cursoVB.NET/tutorVBNET04.htm#TiposDatoshttp://www.mundoprogramacion.com/NET/cursoVB.NET/tutorVBNET04.htm#TiposDatos
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    7/173

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    8/173

    8

    de clases orientadas a objeto disponibles para cualquiera de los lenguajes basadosen .NET, incluido el Visual Basic. Esto quiere decir que a partir de ahora Visual Basicya no ser la "oveja negra" de los lenguajes de programacin, sino que tendr a sudisposicin todas las clases disponibles para el resto de los lenguajes basados en.NET, (o casi), con lo cual slo nos diferenciar del resto de programadores en laforma de hacer las cosas: ms fciles!

    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 queantes nos estaban vetadas. De todo esto veremos en esta serie de "entregas",espero que, aunque es un poco ms complicado que el Visual Basic de "siempre",confo en que te sea fcil de asimilar. A ver si lo consigo!

    Sobre la versin de Visual Basic .NET:

    A la hora de escribir estas lneas, la versin de Visual Basic .NET que hay disponible

    es la que se incluye en la Beta2 de Visual Studio .NET. Pero segn dicen, la versinfinal tendr pocos cambios con respecto a la Beta 2, as que, espero que todo loque aqu explique sea vlido para la versin definitiva de Visual Basic .NET.

    Algunas aclaraciones preliminares:

    Antes de empezar a ver el cdigo, un par de aclaraciones, que aunque ahora puedeser que te suenen a chino, (si eres chino o conoces ese idioma, slo decirte que esuna frase hecha: "me suena a chino" es como decir: "no s de que me estshablando"), pronto sern tan usuales que acabars por asimilarlas como si toda tu

    vida las hubieras estado usando... o casi...

    Extensin de los ficheros de cdigo.En Visual Basic .NET a diferencia de lo que ocurra en las versiones anteriores deVisual Basic, slo existe un tipo de fichero de cdigo, el cual tiene la extensin .vb,en este tipo de fichero pueden coexistir distintos tipos de elementos, por ejemplo:un mdulo de clase, un formulario, un mdulo de cdigo, un control, etc.; mientrasque en las versiones anteriores de Visual Basic, cada uno de estos elementos tenansu propio tipo de fichero con su respectiva extensin. Si no sabes o no quieressaber de lo que ocurra en las versiones anteriores, me parece muy bien... peroesto slo es para que lo sepas y no te sorprenda, si es que hay algo que an puedesorprenderte, 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, ygrficos, como los que normalmente estamos 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 uncompendio de distintos tipos de elementos...), servicios Web, servicios Windows,etc.

    Nuestra primera aplicacin con Visual Basic .NET.

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    9/173

    9

    Para ir calentando motores, creo que lo mejor es empezar creando una pequeaaplicacin con VB.NET, despus iremos aclarando los distintos conceptos usados...as te resultar menos complicado todo lo que tengo preparado para ti.

    Inicia el Visual Studio .NET, por defecto te mostrar la "pgina de inicio" desde lacual pueden 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 panelizquierdo selecciona Proyectos de Visual Basic (Visual Basic Projects) y de los quemuestra en el panel de la derecha, selecciona Console Application

    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),

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    10/173

    10

    deja el nombre que muestra por defecto, en la versin inglesa de Visual Studio.NET se llamar ConsoleApplication1. 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 elSolution Explorer), con el cdigo necesario para empezar a escribir. Fjate queadems del procedimiento Sub Main, el cual se usar como punto de entrada denuestro ejecutable, tambin ha creado una "definicin" llamada Module Module1con su respectivo End Module, el cual indica dnde termina la definicin delmdulo. Esto es as, porque, como te dije hace un rato, en un mismo fichero .vb,pueden existir distintos tipos de elementos. Por ahora, dejmoslo as... ya habrtiempo de complicarnos la vida...

    Una aclaracin: lo que estamos creando es una aplicacin tipo consola, es decir,no se crear ninguna ventana grfica, sino que el ejecutable que vamos a crearfunciona desde una ventana de MS-DOS (o consola). Esto lo comprobaremoscuando ejecutemos el proyecto.

    Lo que queremos, (o mejor dicho, lo que YO QUIERO), mostrar, es un mensaje quediga algo as como: Hola mundo .NET que original! verdad?, por tanto paramostrar un texto en la "consola", usaremos una funcin, mtodo o instruccin,(como prefieras llamarla), que si bien no es nativa de Visual Basic .NET, lausaremos como si lo fuese... como veremos ms tarde, TODO esto es posiblegracias a los assemblies o a las clases incluidas en el .NET Framework. Por ahorasimplemente confa en mi y escribe lo que te voy 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 loque queremos que se muestre en la consola, en este caso queremos mostrar un

    texto, el cual hay que incluirlo dentro de comillas dobles.Escrbelo entre el Sub Main() y el End Sub. Comprueba que cuando escribasConsole y el punto, se mostrarn las funciones que Console pone a nuestradisposicin, as como una pequea ayuda, en modo de ToolTip, aunque a esto, o aalgo parecido, ya estars acostumbrado si has usado alguna vez el Visual Basic 5/6.

    Bien, ya tenemos todo lo que necesitamos. Ahora tendremos que indicarle al"Entorno Integrado" (IDE) que compile el proyecto y lo ejecute, y despus decompilarse el proyecto, se deber mostrar el texto en una ventana de DOS (oconsola).(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)

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    11/173

    11

    Pregunta: Que ha pasado?Respuesta: Realmente se ha mostrado el mensaje en una ventana de consola...(salvo que hayas cometido algn error, cosa que slo habr ocurrido si en lugar deestar leyendo, te has dedicado a hacer tus propias pruebas, as que... HAZ ELFAVOR DE ATENDER 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 teclaIntro. 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 deque la 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 queya somos capaces de crear nuestros propios ejecutables. La verdad es que a estasalturas (o mejor 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 que sabes... que ya has trabajado antes con el Visual Basic... queincluso te has ledo mi Curso Bsico de VB... entonces... tendrs que esperaralgunas entregas o unirte al grupo de estudiantes noveles (o principiantes onovatos o... como quieras llamarlos) y esperar a que los conceptos bsicos estnaclarados, ya que este curso es un curso de iniciacin y si los que lo siguen yasupieran tanto como t, no sera un curso de iniciacin... pues eso... (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 deVisual Studio .NET, (que es el que se usa con Visual Basic .NET), para que podamosconfigurar algunos aspectos, por ejemplo para indicar cmo se comportar elcompilador e intrprete sobre el cdigo que escribamos o para configurar laslibreras (assemblies) que se usarn en nuestras aplicaciones. Recuerda que VisualBasic .NET usa una serie de libreras (de clases) con las funciones que necesitemosen cada momento...

    Te parece complicado? No te preocupes... ahora simplemente lee y prontoentenders, pero por favor: lee! no intentes pasar todo este "rollo" por alto, yaque si no te enteras de lo que te estoy contando, seguramente acabarspreguntndomelo por e-mail y la nica respuesta que recibirs por mi parte es quete vuelvas a leer toda esta parrafada... gracias.

    Por ejemplo, para poder mostrar un texto en la consola, necesitamos tenerdisponible la librera en la cual est declarada la clase Console, para que podamosacceder a las funciones que dicha clase pone a nuestra disposicin, (por ejemploWrite o Read); en este caso la librera en la que est la clase Console es: System.System realmente es un Namespace o espacio de nombres, no es una librera oassembly.

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    12/173

    12

    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, yaque as es como aparecer en el cdigo), es una forma de agrupar clases,funciones, tipos de datos, etc. que estn relacionadas entre s. Por ejemplo, entrelos Namespaces que podemos encontrar en el .NET Framework encontramos unocon funciones relacionadas con Visual Basic: Microsoft.VisualBasic. Si te fijas,Microsoft y VisualBasic estn separados por un punto, esto significa que Microsofta su vez es un Namespace que contiene otros "espacios de nombres", tales como elmencionado VisualBasic, CSharp y Win32 con el cual podemos acceder a eventoso manipular el registro del sistema...

    Para saber que es lo que contiene un Namespace, simplemente escribe el nombrecon un punto y te mostrar una lista desplegable con los miembros que pertenecena dicho espacio de nombres.

    Por regla general se deberan agrupar en un Namespace funciones o clases queestn relacionadas entre s. De esta forma, ser ms fcil saber que estamostrabajando con funciones relacionadas entre s.Pero el que distintos espacios de nombres pertenezcan a un mismo Namespace,(viene bien esto de usar la traduccin castellana e inglesa de una palabra, para noser redundante), no significa que todos estn dentro de la misma librera oassembly. Un Namespace puede estar repartido en varios assemblies o libreras.Por otro lado, un assembly, (o ensamblado), puede contener varios Namespaces.Pero de esto no debes preocuparte, ya que el IDE de Visual Studio .NET se encargade "saber" en que assembly est el Namespace que necesitamos.

    Que es un assembly (o ensamblado)?

    "Un ensamblado es el bloque constructivo primario de una aplicacin de .NETFramework. Se trata de una recopilacin de funcionalidad que se construye,versiona e instala como una nica unidad de implementacin (como uno o msarchivos). [...]"

    Para que nos entendamos, podramos decir que un assembly es una libreradinmica (DLL) en la cual pueden existir distintos espacios de nombres. Aunqueesto es simplificar mucho, por ahora nos vale.

    Un ensamblado o assembly puede estar formado por varios ficheros DLLs y EXEs,pero lo ms importante es que todos los ensamblados contienen un manifiesto (omanifest), gracias al cual se evitan muchos de los quebraderos de cabeza a los queWindows nos tiene acostumbrados, al menos en lo referente a las distintasversiones de las libreras y ejecutables, seguramente habrs odo hablar de las DLLHell(o libreras del demonio) expresin que se usa cuando hay incompatibilidad deversiones entre varias libreras que estn relacionadas entre si.Por ejemplo, supongamos que tenemos una librera DLL que en su primera versin

    contena X funciones. Al tiempo, se crea la segunda versin de dicha librera en laque se cambian algunas funciones y se aaden otras nuevas, para mejorar el

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    13/173

    13

    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 otralibrera puede ser una librera del sistema, la cual a su vez se actualiza con nuevafuncionalidad y puede que dicha funcionalidad dependa a su vez de una terceralibrera.Resulta que instalamos un programa que usa las ltimas versiones de todas estas

    libreras. Todo va bien, el programa funciona a las mil maravillas y nosotrosestamos "supersatisfechos" de ese programa que no se cuelga ni una sola vez...(quin habr hecho ese programa tan maravilloso?, sin comentarios...)Ahora llega a nuestras manos otra aplicacin que necesitamos instalar y lainstalamos, pero resulta que esa aplicacin usa la primera versin de nuestrafamosa librera. Si el programa de instalacin est bien hecho, no ocurrir nadamalo, ya que al descubrir que tenemos una versin ms reciente de la librera, dejala que ya est instalada. Probamos el programilla de marras y todo funciona bien.Probamos el maravilloso programa anterior y tambin funciona bien. Cual es elproblema? Por ahora ninguno, pero espera...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

    "mala manera", bien porque el programa de instalacin sea una caca o bien porquesimplemente se ha instalado mal... como quiera que ha instalado una libreraanterior a la que nuestros dos maravillosos ejecutables usan, se puede dar el casode que ninguno de los dos programas funcionen correctamente... esto ocurricuando sali el Internet Explorer 4 y a ms de uno nos trajo de cabeza, aunquetambin ha ocurrido con otros programas que no han tenido en cuenta a la hora deinstalar que ya existe una versin ms reciente de la librera. Por suerte, esto ya esmenos comn que hace unos aos, sobre todo si los programas de instalacin estncreados con el Windows Installer o estamos usando el Windows 2000/XP.Pero es que .NET mejora an esa "imposibilidad" de meter la pata ya que cadaassembly contiene un manifiesto en el cual se indica:-el nombre y la versin del assembly,

    -si este assembly depende de otros ensamblados, con lo cual se indica hasta laversin 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 quees el propio .NET el que se encarga de que todo funciones a las mil maravillas, o almenos esa es la intencin.

    La ventaja de los ensamblados es que "realmente" no necesitan de una instalaciny un registro correcto en el registro del sistema de Windows, ya que es el

    "intrprete" de .NET el que se encarga de hacer las comprobaciones cuando tieneque hacerlas. Por tanto podramos distribuir una aplicacin sin necesidad de crearun programa de instalacin. Pero, (por qu siempre hay un pero?), si la aplicacinusa ensamblados compartidos, puede que sea necesario usar una instalacin.Los ensamblados compartidos se pueden usar por varias aplicaciones diferentes ydeben estar "debidamente" instalados en el directorio asignado por el propio .NETFramework.Ejemplo de ensamblados compartidos son los que definen las clases (tipos) usadospor el propio .NET Framework.

    Para terminar esta primera entrega introductoria al mundo .NET vamos a veralgunos conceptos que usaremos con bastante frecuencia en el resto de las

    entregas:

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    14/173

    14

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

    En la entrega anterior vimos algunos conceptos generales que acompaan a estaversin de Visual Basic, tambin vimos algunas palabras que usaremos durantetodo este curso de iniciacin, dichas palabras estn en el glosario, al cual iraadiendo nuevas definiciones, conforme surjan o yo me vaya acordando, as quete recomiendo que de vez en 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 VisualStudio, no de Visual Basic... y no me he confundido, ya que dicho IDE es el mismopara cualquier lenguaje .NET. Por tanto, si adems de usar el VB.NET quieres hacertus "pinitos" con el C# o con cualquier otro, no tendrs que abrir otro programapara cada uno de esos lenguajes. Incluso podrs trabajar con varios proyectos a unmismo tiempo, aunque sean de lenguajes diferentes. Adems, si as lo quieres y"sabes" cmo hacerlo, puedes crear tus propios complementos para que se integrencon 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 VisualStudio .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 aseleccionar una aplicacin de Windows:

    Figura 1

    No te preocupes, que no te voy a complicar la vida, simplemente vamos a teneralgn tipo de proyecto cargado en el entorno de desarrollo, ya que lo que vamos a

    http://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htmhttp://www.mundoprogramacion.com/NET/cursoVB.NET/tutorVBNET01.htmhttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htmhttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htmhttp://www.mundoprogramacion.com/NET/cursoVB.NET/tutorVBNET01.htmhttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    15/173

    15

    ver es cmo modificar y configurar algunos de los aspectos del mismo.Djale el nombre que te muestra, ya que nos da igual cmo se llame. (el Guille estun pocopasota, verdad?)

    En el proyecto, se habr creado un formulario, el cual seguramente te lo mostrarde forma automtica. Si no se mostrara nada y siguiera estando la pantalla de

    inicio... dale un respiro ya que seguramente se lo estar pensando... en caso deque despus de pensrselo no lo mostrara tampoco... fjate en el lado derecho de lapantalla, vers que hay un "panel" o ventana en la que se indica el proyecto actualy se muestran los ficheros que lo componen. Ese panel es el "Solution Explorer" oExplorardor de Soluciones, (te digo cmo se llama en los dos idiomas, ya que,algunas de las imgenes que te voy a mostrar estn capturadas de la versin encastellano del Visual Studio .NET y otras de la versin en ingls... as cuando laveas en un idioma o en otro, sabrs de que 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 semuestran en el formulario, ese "grid" o grilla, servir para ajustar los controles (yasabrs de qu hablo) 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), simplementecon hacer un click en l es suficiente. vers que tiene este aspecto:

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    16/173

    16

    Figura 3

    Realmente no tendr ese aspecto, salvo que tengas el Windows XP, pero al aspectoque me 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 sonlas propiedades del Form1. Vamos a buscar el elemento GridSize para podercambiar el tamao de separacin. Vers que se muestran dos valores separadospor punto y coma, pero tambin hay una cruz a la izquierda de la palabra GridSize,si pulsas en esa cruz, se mostrarn los tamaos a lo que se refiere esos valoresseparados por punto y coma:

    Figura 4

    Posicinate en cualquiera de ellos y asgnale el valor 4, de esta forma, tendremosun formulario con una cuadrcula mas pequea, en la que ser ms fcil posicionarlos controles 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 hemosasignado, los que 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

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    17/173

    17

    del Windows 2000 (clsico), aunque en resumidas cuentas, lo que hay que ver esque los punticos esos estn ms arrejuntaos...

    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 aadiruna etiqueta (Label) y una caja de texto (TextBox), simplemente haz doble-clicksobre esos elementos 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 deberassaber hacerlo, ya que son cosas bsicas de Windows, as que en prximasocasiones no esperes tantas explicaciones... vale?

    Aade ahora un botn (Button) y sitalo debajo del textbox. Para cambiarle el textoque muestra el botn, que por defecto ser el nombre que el IDE le ha asignado, enesta ocasin ser Button1, hay que usar la ventana de propiedades, en estaocasin el elemento que nos interesa de esa ventana de propiedades es Text,escribe Mostrar y cuando pulses Intro, vers que el texto del botn tambin hacambiado. Si antes has trabajado con el Visual Basic "clsico", esa propiedad sellamaba Caption. Decirte que ya la propiedad Caption no existe en ningn control,ahora se llama Text.Haz lo mismo con la etiqueta, recuerda que tienes que seleccionarla (un click) paraque se muestren las propiedades de la etiqueta, escribe Nombre: y pulsa intro.

    Ahora vamos a escribir cdigo para que se ejecute cada vez que se haga click en elbotn que hemos aadido.Para ello, selecciona el botn Mostrar y haz doble click en l, se mostrar unanueva ventana, en este caso la ventana de cdigo asociada con el formulario quetenemos en nuestro proyecto.

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

    PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    18/173

    18

    EndSub

    Lo que vamos a hacer ahora, como ya te he dicho, es escribir el cdigo que seejecutar cuando se haga click en ese botn, lo cual producir el evento Clickasociado con dicho botn, ese evento se producir si se hace un click propiamentedicho, es decir con el 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 Basicsiguen el siguiente "esquema":[nombre del control] [guin bajo] [nombre del evento]Pero esto slo es una sugerencia que Visual Basic nos hace, en las versionesanteriores no era una sugerencia, era una imposicin. Podemos dejar el nombreque Visual Basic nos sugiere o podemos 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 lo que el compilador/intrprete de VisualBasic sabe que este procedimiento es un evento y que dicho evento es el eventoClick del objeto Button1.

    Un detalle: el nombre Button1 es porque hemos dejado el nombre que por defectoel IDE de Visual Studio asigna a los controles que se aaden a los formularios. Siquieres que se llame de otra forma, simplemente muestra el formulario, seleccionael control al que quieres cambiarle el nombre, busca la propiedad Name en laventana de propiedades y cambia el nombre que all se sugiere por el que tuquieras... o casi, ya que para los nombres de los controles, as como para otrascosas que usemos en Visual Basic hay que seguir 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 haceclick en el botn, escribe ese nombre despus de Private Sub, aunque no es

    necesario cambiar el nombre del evento, ya que, al menos por ahora, nos sirve taly como est.

    Lo que si importa es lo que escribamos cuando ese evento se produzca, en estecaso vamos a a hacer que se muestre un cuadro de dilogo mostrndonos elnombre que previamente hemos escrito en el cuadro de texto.Escribe lo siguiente en el hueco dejado por el Visual Basic, la lnea que hay entrePrivate Sub... y End Sub

    MsgBox("Hola " & TextBox1.Text)

    Antes de explicarte que es lo que estamos haciendo, pulsa F5 para que se ejecuteel cdigo que hemos escrito o pulsa en el botn "play" que est en la barra debotones.Escribe algo en la caja de textos, que por defecto tendr "TextBox1", (que es elvalor que por defecto Visual Basic le asigna a la propiedad Text de dicho control),pulsa en el botn Mostrar y vers que se muestra un cuadro de dilogo dicindoteHola y a continuacin lo que hayas escrito en el TextBox.

    http://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Eventohttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Procedimientohttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Eventohttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Procedimiento
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    19/173

    19

    Algo as:

    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 elformulario, pulsa en el botn con la "x".

    Ahora vamos a aadir otro botn, el cual se llamar cmdCerrar y el texto que debe

    mostrar es: Cerrar.Y este es el cdigo que debe ejecutar cuando se haga click en el... te atreves ahacerlo sin ayuda? Si no te atreves, tendrs que hacerlo sin mi ayuda... creo queya sabes cmo hacerlo... 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 todoen .NET), cuya tarea es mostrar en un cuadro de dilogo lo que le indiquemos en elprimer parmetro, tambin tiene parmetros opcionales, pero por ahora usemosslo el primero que es obligatorio.En Visual Basic.NET todos los procedimientos que reciban parmetros deben usarsecon los 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 dentrode los parntesis, en este caso, queremos que se muestre la palabra "Hola " y loque haya en la caja de texto.

    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 otracosa... pero una vez que el programa est compilado, siempre ser lo mismo... por

    http://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Par%C3%A1metrohttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Par%C3%A1metrosopcionaleshttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Constantehttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Par%C3%A1metrohttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Par%C3%A1metrosopcionaleshttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Constante
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    20/173

    20

    eso se llama constante, porque no cambia... en este caso una constantealfanumrica o de cadena, por eso va entrecomillada, ya que todos los literales ocadenas que queramos usar en nuestros proyectos deben ir dentro de comillasdobles.Por otro lado, TextBox1.Text representa el texto que haya en la caja de textos ypor tanto devolver lo que en l hayamos escrito.

    Por ltimo, para que esas dos cadenas de caracteres, la constante Hola y elcontenido de la propiedad Text del control TextBox1, se puedan unir para usarlacomo una sola cadena, usaremos el signo & (ampersand) el cual sirve para eso,para concatenar cadenas de caracteres y hacer que Visual Basic entienda que esuna sola.Por tanto, si la propiedad Text del control TextBox1 contena la cadena TextBox1,(tal y como se muestra en la figura 7), al unir las dos cadenas, resultar una nuevacon el siguiente contenido: "Hola TextBox1" que no es ni ms ni menos que la"suma" de las dos cadenas que tenamos... (s, ya se que soy un poco pesado conestos y que me estoy repitiendo, pero t lee y deja que yo piense en cmo hacerque todo esto te entre en tu cabecita... vale? gracias por la confianza...)

    En el mtodo del evento Click del botn cerrar hemos escrito: Me.Close()Me representa al objeto o clase Form1 (el formulario) y el mtodo Close lo quehace es cerrar el formulario, igual que cuando pulsamos en el botn cerrar delformulario.

    Vamos a ver ahora el cdigo completo del evento Click del botn cerrar, as comolos pasos que se supone que has realizado para poder aadirlo al formulario, tal ycomo te dije 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:

    PrivateSub 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 depropiedades, puedes hacer que se muestren por orden alfabtico, simplementepulsando en el botn AZ:

    http://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Mehttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Me
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    21/173

    21

    Figura 8

    Seguramente te estars preguntando porqu algunas imgenes estn en espaol yotras en ingls, (y si no te lo ests preguntando, te lo va a decir igualmente), esporque algunas capturas las hice en de la versin en castellano de la Beta 2 deVisual Studio .NET y otras en la versin en ingls, la razn o motivo de estadualidad?, la particin en la que tena instalado la versin en espaol, la heformateado y cuando quise volver a instalarla, me dio tantos errores que desist yahora estoy usando la versin inglesa que ya 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 ladocumentacin en espaol, me da lo mismo que el entorno de trabajo est o no eningls... cosa que cambiar cuando est la versin definitiva... o cuando me envenla versin con la documentacin en espaol... lo que antes ocurra).S que 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 hastaahora hemos usado, pero con el lenguaje C# (c sharp), para que veas que enalgunas cosas es igual de sencillo usarlo, aunque en algunos aspectos es msestricto que el Visual Basic y as de camino te demuestro que no era falso eso que

    te dije de que en el entorno integrado del Visual Studio .NET podamos tener variosproyectos en varios de los lenguajes soportados por .NET.

    Sin cerrar el proyecto que ya tenemos, despliega el men File/Archivos y seleccionala opcin Add project (Aadir proyecto), del submen que te mostrar seleccionaNuevo proyecto... y del cuadro de dilogo que te muestra, (como el de la Figura 1),selecciona del panel izquierdo Visual C# Pojects y del derecho WindowsApplication, y pulsa en el botn Aceptar.(en la imagen siguiente te muestro tambin el nombre que yo le he dado:WindowsApplication1cs)

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    22/173

    22

    Figura 9

    Se aadir un nuevo proyecto al Explorador de soluciones, fjate que la extensindel formulario es .cs en lugar de .vb que es la extensin que se usa en los ficherosde Visual Basic .NET.

    Aade los mismos controles que en el formulario de Visual Basic y tambincmbiale el nombre al botn cerrar.Cmbiale el texto que muestra el formulario para que indique esto: Form1 parac#, ya sabes, selecciona el formulario y en la ventana de propiedades eliges lapropiedad 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 laparticularidad de que hay que especificar el mtodo que queremos usar, en estecaso: Show. El resto se usa igual que con VB, con la salvedad de que laconcatenacin de cadenas se hace usando el signo de suma (+) en lugar delampersand (&), (eso mismo tambin podemos hacerlo con Visual Basic, pero terecomiendo que uses el signo & en lugar de + cuando quierassumar

    cadenas de caractes en VB), y otro detalle: todas las instrucciones en C# debenacabar en punto y coma (;).Esta funcin MessageBox tambin podemos usarla en nuestros proyectos de VB, enlugar de MsgBox, ya que es una clase que pertenece al .NET Framework y todas lasclases del .NET Framework podemos usarlas en nuestros proyectos de VisualBasic .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: laclase en la que se usa.

    Si pulsas F5, vers que funciona de igual forma que antes... tan igual porque es elmismo proyecto de VB, la razn es porque al tener varios proyectos en el panel del

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    23/173

    23

    explorador de soluciones, tenemos que indicarle cual de los proyectos es el que seejecutar al pulsar F5, para cambiarlo al de C#, selecciona el nuevo proyectoaadido y pulsando con el botn derecho, selecciona del men desplegable: Set asStartUp Project (seleccionarlo como proyecto de inicio o algo parecido en laversin espaola)

    Figura 10

    Pulsa F5 y se ejecutar ese proyecto, te dars cuenta que es el de c# por el captiondel formulario, ya que el aspecto es idntico al de VB, otra cosa por la que te darscuenta de que no es el proyecto de VB es cuando pulses en el botn mostrar, elcuadro de dilogo no muestra el nombre de la aplicacin, como ocurra con elproyecto de VB, (ver la figura 7), para eso ocurra, tendremos que decirleexplcitamente 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 ltambinva experimentando mientras te explica, que conste, no sea que te creas que elGuille ha nacido sabiendo...)

    - Crear un nuevo proyecto en Visual Basic y en C#- 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.

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    24/173

    24

    - 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 del glosario,sitio al que te mandan los links que has encontrado en algunas de esas palabras.

    En esta tercera entrega del curso de iniciacin a la programacin con VisualBasic .NET vamos a seguir viendo algunas cosillas ms del entorno integrado deVisual Studio .NET, en esta ocasin vamos a hacer que los controles que tengamosen un formulario se adapten de forma automtica al nuevo tamao de la ventana(formulario) as como a los distintos tamaos de fuentes que el usuario denuestras aplicaciones .NET prefiera usar, ya que no todo el mundo usa la mismaresolucin que nosotros ni los mismos tamaos de letras.

    Hacer esto con las versiones anteriores de Visual Basic era un trabajo duro yalgunas veces bastante engorroso, que requera bastante cdigo y casi nunca selograba lo que queramos... que no sabes de qu estoy hablando? bueno, no tepreocupes que, aunque ahora no sepas la utilidad de todo lo que te voy a explicarpueda tener, en algn momento lo necesitars y aqu tendrs la explicacin decmo 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), sepuede hacer redimensionable, es decir que el usuario puede cambiar de tamao, enestos casos, lo adecuado sera que los controles que dicho formulario contenga, seadapten al nuevo tamao de la ventana, con idea de que no queden huecos vacos

    al cambiar el tamao de la ventana.

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

    Figura 1

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

    http://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htmhttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Formulariohttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htmhttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Formulario
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    25/173

    25

    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 laventana se ajusten los controles al nuevo tamao, para que tuviesen este otroaspecto:

    Figura 3

    Para que esto sea posible de forma automtica, hay que hacer unas cuantasasignaciones a los controles, de forma que podamos indicarle qu tienen que hacercuando el tamao de la ventana vare.En este ejemplo, lo correcto sera que:- La caja de texto superior se agrandase hacia el lado derecho.- El botn Aadir se moviese hacia el extremo derecho del formulario.

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    26/173

    26

    - 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 elformulario en el entorno integrado o bien lo podemos codificar dentro del propioformulario, dnde hacerlo queda a tu criterio, yo te voy a explicar cmo hacerlo enlos dos casos y despus tu 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 unalista (ListBox)Deja los nombres que el IDE ha puesto, salvo para el botn, el cual se llamarcmdAdd.(realmente puedes ponerles los nombres que quieras, pero los que yo voy a usarson: 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 quela caja de textos estar "anclada" a la izquierda y arriba, pero ahora vamos aseleccionar tambin la derecha. Cuando pulses en la lista desplegable vers que semuestra una imagen con cuatro lneas, (como la mostrada en la figura 4), dos delas cuales son obscuras (estn seleccionadas) y las otras dos estn blancas (noseleccionadas), pulsa en la lnea de la derecha, para que se ponga gris, de estaforma estaremos indicndole que tambin 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,vers que la caja de textos se adapta al nuevo tamao. Ahora "achcalo", es decirhaz que se haga ms pequeo hacia la izquierda, incluso haz que no se vea elbotn, comprobars que la caja de texto sigue estando "proporcionalmente" igualde separada de los extremos superior, derecho e izquierdo y se adapta al tamaode la ventana.Incluso si intentas hacer la ventana muy pequea, el ancho se quedar justo en laparte izquierda de la caja de texto, con el alto puedes hacer que casi desaparezca,(salvo el caption de la ventana, la barra de arriba, la cual se mantiene).

    Ahora vamos a "anclar" el botn.Una vez que hayas terminado de probar... vamos a seguir... valeeee! deja ya de

    juguetear con la dichosa ventanita.

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    27/173

    27

    Ahora, de vuelta al IDE, selecciona el botn y en la ventana de propiedadesselecciona la propiedad Anchor.En este caso, lo que nos interesa es que el botn se desplace a la derecha, peroque no se 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

    el tamao del formulario, el botn se desplazar a la derecha o a la izquierda, perono cambiar de tamao, como le ocurre al textbox.Pulsa F5 y comprubalo. Agranda el formulario, (hacia la derecha) y achcalo,(hacia la izquierda), vers que el botn llegar casi a tocar el lado izquierdo delformulario y all se quedar, no permitiendo que se haga ms pequeo.

    Por ltimo vamos a anclar el listbox... cmo? que quieres intentarlo por tucuenta? vale... me parece bien...Slo decirte que el listbox debe hacerse grande tanto hacia la derecha como haciala izquierda e incluso cuando se estira el formulario desde la parte inferior, pero enla parte superior debe mantenerse en la misma posicin.

    Fjate en la figura 3...

    Bueno, espero que lo hayas conseguido. Si no es as, no te preocupes, ahoraveremos la solucin.

    Vamos a complicar un poco ms la cosa y vamos a aadirle otro botn. En estecaso, dicho botn estar en la parte inferior derecha del formulario, ser el botncerrar y al pulsarlo 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 tantolos valores que hay que asignar en Anchor son precisamente esos: Right y Botton(derecha y abajo).

    Como habrs notado, con el Label1 no hay que hacer nada, ya que por defecto eltamao se ajusta por la derecha y por abajo, por tanto se quedar en la mismaposicin... aunque realmente est anclada arriba y a la izquierda, que son losvalores por defecto de la propiedad Anchor, por eso no es necesario asignarle nada.

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

    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).Cuando estamos en el IDE y hacemos doble-click en el formulario se muestra elevento Form_Load que es el que se ejecuta cuando el formulario "se carga" en lamemoria, justo antes de mostrarse, por tanto aqu es un buen sitio para haceralgunas "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 laposicin que nosotros le indiquemos.

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

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    28/173

    28

    PrivateSub 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 alcompilador de Visual Basic .NET qu evento es el que "manipula" o maneja esteprocedimiento. Siempre lo digo... o lo pienso, que los anglosajones (los que hablaningls) lo tienen muchsimo ms fcil que los que no hablamos la lengua deShakespeare, ya que para ellos eso de Handles es una palabra que tiene sentido yprecisamente quiere decir eso "maneja", manipula, se encarga de , etc. con lo cualtienen superclaro que es lo que quiere decir esa palabreja... Esto, (la declaracindel Sub), se encarga de manejar el evento Load del objeto MyBase.Aunque tambin hay que decirlo... algunos de esos "hablantes" de ingls, an apesar de tener el lenguaje (idioma) a su favor... no tienen ni repajolera idea deBasic... en fin... ese consuelo nos queda... as que, no te desanimes y tira "palante", que "pa trs" no hay que ir ni para coger carrerilla...

    El objeto MyBase se refiere al objeto base del que se deriva el formulario, recuerdaque en .NET todo est basado en objetos y en programacin orientada a objetos ytodo objeto se deriva de un objeto bsico o que est ms bajo en la escala de lasclases... es decir, un formulario se basa en la claseSystem.Windows.Forms.Form y a esa clase es a la que hace referencia el objetoMyBase, mientras que Me se refiere a la clase actual, la que se ha derivado dedicha clase Form o por extensin a cualquier clase, como veremos en futurasocasiones.

    Cmo? que has acabado por liarte ms? que no has captado lo que acabo dedecir?

    Pues lo siento por ti... pero no te lo voy a explicar mejor... simplemente djaloestar y poco a poco acabars por comprenderlo... (je, je, que malo que soyalgunas veces!)

    Veamos ahora el cdigo prometido para hacer que los controles se anclen alformulario de 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 defuentes, no a los que nosotros tenemos en nuestro equipo... ya que hay gente quepor necesidades tienen que poner tamaos de fuentes ms grandes e incluso ms

    http://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Handleshttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#MyBasehttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Mehttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Handleshttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#MyBasehttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Me
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    29/173

    29

    pequeas... que tambin hay quin tiene un monitor de 19 o 21 pulgadas y lomismo tienen que usar letras de tamaos ms pequen...

    La propiedad que hace eso posible es AutoScale, esta propiedad slo estdisponible en los formularios y por defecto tiene el valor True (verdadero), portanto 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, (aunqueest en ingls)

    Otra cosilla interesante que tienen los formularios es la propiedad AutoScroll. Siasignamos el valor True (verdadero) a esta propiedad, hacemos que cuando elformulario se haga muy pequeo o muy estrecho, se muestren unas barras dedesplazamiento (scrolls) para que pulsando en ellas podamos ver el contenido delmismo.Por ejemplo si no hubisemos "anclado" nuestros controles, al hacer el formularioms estrecho se mostraran unas barras de desplazamiento para que podamos verlos controles 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 opcionesde Comentar Seleccin y Quitar los comentarios puestas en la barra deherramientas, ya que de vez en cuando las utilizo para hacer alguna que otraprueba y no tener que borrar el texto que quiero quitar)

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    30/173

    30

    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

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    31/173

    31

    Todas estas cosas ya nos hubiese gustado tenerlas en las versiones anteriores deVisual Basic, ya que para hacerlo o bien te tenas que "comer" el coco o bien tetenas que crear un control que hiciera ese trabajo...

    Slo comentarte que los Ors que se estn utilizando sirven para "sumar" y elresultado sera el mismo que si usramos el signo de suma, pero la razn de usar

    Or es porque lo que queremos hacer es una suma de bits... realmente da lo mismousar la suma que Or en este caso, pero... dejemos el Or que es lo apropiado... y nome preguntes porqu... ya que, aunque no te hayas enterado, te lo acabo deexplicar... 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 caja detextos, 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 quehaya que codificar en el evento Click del botn cmdAdd. Para que nos muestre eseevento, simplemente haz doble-click en el botn y el VB te mostrar el evento encuestin, aade este 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 deHandles te lo he explicado hace un rato.

    Si te has fijado en el cdigo que te mostr del evento Form_Load, seguramentehabrs visto 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 ListBoxClear es un mtodo de Items que se encarga de limpiar los elementos de la lista,es decir: 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,por tanto, como ya sabemos que Items es el sitio en el que se guardan loselementos de la lista, lo nico que tenemos que saber es cmo se aaden nuevos

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    32/173

    32

    elementos a dicha lista? y para eso estoy yo aqu: para contrtelo; pero como meimagino que eres lo suficientemente observador, te habrs "percatado" que Add eslo que necesitamos para aadir elementos a la lista de un ListBox. Si no eres tanobservador (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 estecaso lo que aadimos es el contenido (el texto) del TextBox, por eso es por lo quehacemos:Items.Add(TextBox1.Text)Aadimos a Items el contenido de la caja de textos.

    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 esdel todo lo que en el VB de antes era una coleccin, ya que en vb.NET existenvarios tipos de colecciones o arrays (arreglos?), pero no vamos a complicarnos lavida... Items es una coleccin de elementos, es decir los elementos estnguardados 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 ycmo asignarlo al TextBox:

    PrivateSub ListBox1_SelectedIndexChanged(ByVal sender AsSystem.Object, ByVal e As System.EventArgs) HandlesListBox1.SelectedIndexChanged

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

    TextBox1.Text = .GetItemText(.SelectedItem) EndWithEndSub

    Fjate que en este caso no es el evento Click, como era de esperar (y como es enlas versiones anteriores de VB, incluso como era en la Beta 1 de vb.NET), sino queel evento en cuestin es SelectedIndexChanged.Ya te he comentado que lo que podemos aadir a los elementos del listbox sonobjetos, pero lo que a nosotros nos interesa mostrar es el "texto" de dichoelemento, ya que no nos interesa otra cosa, ms que nada porque lo que hemosaadido son textos y no objetos... aunque, como ya te he comentado en otrasocasiones TODO lo que se maneja en .NET son objetos, incluso las cadenas de

    textos son objetos... pero... en fin... dejemos las 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 larepresentacin en formato texto del elemento indicado dentro de los parntesis).

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

    Cmo hacemos para escribir cdigo en otros eventos?Para poder usar otros eventos de un objeto, muestra la ventana de cdigo, de lalista desplegable de la izquierda, selecciona dicho objeto y en la lista desplegablede la derecha elige el evento que quieras usar, en nuestro prximo ejemplo ser el

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    33/173

    33

    evento KeyDown, tal y como se muestra en la figura 7, los eventos se distinguenpor el rayo que se muestra a la izquierda del nombre del elemento...

    Figura 7

    Como dato curioso, en los formularios de C# se puedenseleccionar los eventos en la misma ventana de propiedadesdel formulario u objeto en cuestin, incluso a veces ocurre queen vb.NET se muestra ese smbolo en la mencionada ventanade propiedades, aunque no siempre y no s exactamenteporqu se muestra... pero espero y confo que en la versindefinitiva 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 Candidate 1, perosegn he ledo en las pginas de Microsoft no se diferenciamucho de la Beta 2, (que es la que estoy usando en estosmomentos), as que... me da mala espina esto de que an noest 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 versin2003

    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 eventoKeyPress, poda haber usado KeyUp tambin, pero ese evento se produce cuando

    se suelta la tecla... (que sera lo lgico), pero yo siempre tengo la costumbre deinterceptar esas pulsaciones en el evento KeyDown (cuando se empieza a pulsar la

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    34/173

    34

    tecla) y es por ese motivo que voy a codificar el tema este de borrar un elementode 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 AsSystem.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyDown If e.KeyCode = Keys.Delete Then With ListBox1

    .Items.Remove(.SelectedItem) EndWith EndIfEndSub

    Es decir, comprobamos si la tecla en cuestin es la de suprimir, si es as,eliminamos el elemento que est seleccionado.Recuerda que SelectedItem nos indica el elemento que actualmente estseleccionado y usando 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 unelemento o varios.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 seleccionantodos los elementos intermedios, (esto deberas saberlo, ya que es una cosahabitual de Windows); tambin puedes seleccionar elementos no contiguos, sipulsas la tecla Control y con el ratn vas haciendo click en elementos noconsecutivos.

    Lo primero que necesitamos saber es:

    Cmo hacer que un ListBox permita mltiple seleccin? ya que por defectoslo se puede seleccionar un elemento a un mismo tiempo.

    Para que un ListBox permita mltiple seleccin de elementos, hay que asignar a la

    propiedad SelectionMode el valor MultiExtended, por tanto selecciona el ListBoxy en la ventana de propiedades, asigna dicho valor a la propiedad SelectionMode.

    Ahora tenemos que hacer ms cosas cuando se detecta la pulsacin de la teclasuprimir en el evento KeyDown, ya que tenemos que saber qu elementos estnseleccionados para 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 atrshacia adelante... por qu? porque si lo hiciramos desde el principio de la lista, aleliminar un elemento de dicha lista, el nmero de elementos variara y tendramosproblemas cuando llegsemos al final, ya que no ser el mismo nmero deelementos despus de haber borrado alguno... mientras que al recorrer los

    elementos desde el final hacia adelante, no importar que borremos alguno delfinal, ya que el siguiente que comprobaremos estar ms al principio que el recin

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    35/173

    35

    borrado y no tendremos problemas... s que no te has enterado, pero no importa,confa en mi, (que remedio te queda!), y ya tendrs tiempo de comprobarlo por tucuenta.

    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 listbox Dim i AsInteger

    ' With ListBox1 For i = .SelectedItems.Count - 1 To 0 Step -1

    .Items.Remove(.SelectedItems.Item(i)) Next EndWith EndIfEndSub

    La parte del Ife.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 lodije, 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 siuna o ms cosas estn relacionadas de alguna forma, en este caso, queremossaber si el valor de e.KeyCode, que es la tecla que has pulsado, es igual aKeys.Delete, ste ltimo valor es un valor "predefinido" que representa a la teclasuprimir.Por tanto, si la tecla que hemos pulsado es igual a la tecla suprimir, entonces hacerlo que viene a continuacin...todo lo que viene a continuacin?

    NO, slo hasta que encontremos End If, pero de esto ya hablaremos en otraocasin.

    Dim i As Integer esto le indica al VB que vamos a usar un nmero y que esenmero lo guarde en la variable i, de esto tambin tendrs ocasin de enterartemejor, por ahora dejmoslo as.

    With ListBox1 el With se utiliza para simplificarnos las cosas y lo que viene asignificar es que donde se tendra que usar el objeto ListBox1, se ponga un punto...ms o menos... ahora veremos cmo se escribira el cdigo sin usar el WithListBox1.

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

    For i = .SelectedItems.Count - 1 To 0 Step -1 con esto le estamos indicandoque use la variable i para ir guardando los valores que resulten de contar desde elnmero de elementos que hay seleccionados hasta cero. El Step -1 se usa paracontar hacia atrs, (de mayor a menor), pero eso, al igual que el For, tambin loveremos ms adelante.SelectedItems es una coleccin en la cual estn los elementos que hayseleccionados en el ListBox.Recuerdas la coleccin Items? Pues en este caso, SelectedItems son los elementosseleccionados y para que lo sepas, todas las colecciones suelen tener un mtodoCount que nos dice el nmero de elementos que hay en ellas.

    http://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Variablehttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Variable
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    36/173

    36

    .Items.Remove(.SelectedItems.Item(i))Esto es parecido a lo visto antes, esdecir, elimina el elemento que est seleccionado y que ocupa la posicin i dentro dela 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 mtodopredeterminado de la coleccin SelectedItems.

    Next indica que contine el bucle o la cuenta que estamos llevando con la variablei.De esta forma, al haber usado el Step -1, lo que hacemos es contar hacia atrs y sipor ejemplo i vala 3, al llegar aqu, valdr 2, es decir restamos 1: el valor indicadoen Step

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

    End Ifle dice que hasta aqu llega la comprobacin que hicimos de si la teclapulsada era la 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 depoco todo 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 laspartes correspondientes.Por tanto, si usamos With Objeto, podemos sustituir a Objeto por el punto,siempre y cuando ese punto, (y la propiedad o mtodo correspondiente), estdentro del par With... End With.

    Seguramente preferirs usarlo de esta otra forma, ya que se ve "claramente" quees lo que estamos haciendo, pero con el tiempo te acostumbrars a usar With/EndWith, entre otras cosas porque yo los uso bastante y al final ser como de lafamilia...

    Y ahora s que hemos terminado... por fin!(Pst! Guille... se te ha olvidado explicar lo de que al pulsar Intro sea como sihubiese pulsado en el botn Aadir y al pulsar Esc como si hubiese pulsado enCerrar)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 esel botn de aceptar, lo mismo ocurre con la "captura" de la tecla ESC, pero en lugar

    de ser el 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

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    37/173

    37

    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

    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 Escse cerrar la aplicacin.

    Nota: En las versiones anteriores de VB, esas propiedades pertenecan al propiobotn, es decir, eran propiedades del objeto CommandButton. Aunque, al menospara m, es ms lgico que estn en el formulario, entre otras cosas porque slopuede haber un botn 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,despus pulsa ESC y vers que se cierra el formulario o ventana con lo que se da

    por terminada la aplicacin.

    Ahora s. Ya hemos terminado por hoy.La prxima vez veremos con ms detalles qu es eso de las variables y puede queincluso 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 estaentrega:

    - 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.

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    38/173

    38

    - Cmo hacer que un ListBox permita mltiples selecciones de elementos.- Cmo saber cuantos y cuales son los elementos que estn seleccionados en elListBox.- 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 un

    formulario.- 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

    Como te dije en la entrega anterior de este curso de iniciacin a la programacincon Visual Basic .NET, en esta ocasin vamos a ver qu es eso de una variable yalgunos otros conceptos que necesitars para poder tomarte esto de programar convb.NET un poco ms en serio... bueno, tampoco hace falta que sea demasiado enserio, simplemente que te enteres de las cosas y sobre todo que sepas aplicarlas enel momento en que sea oportuno o necesario... (que bien ta quedao ezo Guille)

    Variables, constantes y otros conceptos relacionados

    El concepto o descripcin de lo que es una variable es fcil de asimilar, si es quehas estudiado en el colegio, al menos hace unos diez aos o ms, ya se explicaba,pero hace 25 30 aos, por poner una cifra, a mi no me lo explicaron... o lo mismoel "profe" lo explic, 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), en fin... no tomes malos ejemplos y aplcate... al menos en esta"clase", en las otras... de ti depende... no te voy a echar el sermn de que debesestudiar 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,una constante es algo que permanece inalterable, por eso se llama constante,porque siempre es constante: inalterable, siempre es lo mismo...Sin embargo una variable puede alterarse, es decir, se le puede cambiar el valorque tiene... por eso se llama variable, como el estado anmico que algunas vecestenemos, hoy estamos de buenas y maana lo mismo tenemos los cables cruzadosy no hay Dios que nos pueda dirigir la palabra... en fin... con una tila se suele

    solucionar... pero... no es de eso de lo que se trata cuando hablamos de variablesen esto de la programacin, ya sea en vb.NET o en cualquier otro lenguaje.

    Las variables son "nombres" que pueden contener un valor, ya sea de tiponumrico como de cualquier otro tipo.Esos nombres son convenciones que nosotros usamos para facilitarnos las cosas, yaque para los ordenadores, (o computadores, segn te guste o ests acostumbradoa llamarlos), una variable es una direccin de memoria en la que se guarda unvalor o un objeto, te vuelvo a recordar por ensima vez que en .NET todo es unobjeto.

    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 tipoalfanumrico o de cadena, (string para los que inventaron esto de los lenguajes de

  • 8/7/2019 Manual de Visual Basic Net(Muy able

    39/173

    39

    programacin), pero en cualquier caso, la forma de hacerlo siempre es de la mismaforma... al menos en .NET ya no hay las distinciones que antes haba en lasversiones anteriores de Visual Basic... no voy a entrar en detalles, pero si hastrabajado anteriormente en VB con objetos, sabrs de que estoy hablando.

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

    como esto:

    i = 10

    En este caso i es la variable, mientras que 10 sera una constante, (10 siempre vale10), la cual se asigna a esa "posicin" de memoria a la que llamamos i, parafacilitarnos las cosas... ya que, realmente no nos interesa saber dnde se guardaese valor, lo nico que nos interesa es saber que se guarda en algn lado para encualquier ocasin poder volver a usarlo.

    Pensars, que tal y como estn las cosas, i tambin vale 10, por tanto por qu noes una constante? por la sencilla razn de que podemos alterar su valor, porejemplo, si en cualquier ocasin posterior hacemos esto: i = 25, el valor de lavariable i cambiar, de forma que el valor anterior se esfumar y el que sealmacenar ser el nuevo.

    Tambin podemos aplicar expresiones al asignar una variable, una expresin esalgo as como un clculo que queremos hacer, por ejemplo: i = x * 25, en este casox * 25 se dice que es una expresin, cuyo resultado, (el resultante de multiplicar loque vale la variable x por la constante 25), se almacenar en la variable i.Si x vale 3, (es decir el valor de la variable x es tres), el resultado de multiplicarlopor 25, se guardar en la variable i, es decir i valdr 75.

    Pero no es suficiente saber qu es una variable, lo importante es saber cmodecirle al vb.NET que queremos usar un espacio de memoria para almacenar unvalor, ya sea numrico, de cadena o de cualquier otro tipo.

    Para que vayas entrando en calor, te dir que las cadenas de caracteres (o valoresalfanumricos) se representan por algo que est contenido dentro de comillasdobles: "hola" sera una constante de cadena, ya que "hola" ser siempre "hola", lomismo que el nmero 10 siempre vale 10.Para asignar esa constante de caracteres a una variable, se hara algo como esto:s = "Hola"De esta forma, la variable s contiene el valor constante "Hola".Podemos cambiar el valor de s, asignndole un nuevo valor: s = "adis", pero nopodemos cambiar el valor de "Hola", ya que si lo cambiamos dejar de ser "Hola" yse convertir en otra cosa...

    Como ya te he dicho, existen distintos tipos de datos que vb.NET maneja, para quepodamos usar una variable para almacenar cualquiera de esos tipos, tenemos quedecirle al VB que "reserve" espacio en la memoria para poder guardarlo.Esto se consigue mediante la "declaracin de variables", es necesario, aunqueno obligatorio, declarar las variables segn el tipo de datos que va a almacenar.Por ejemplo, en el caso anterior, la variable i era de tipo numrico y la variable sera de tipo cadena. Esas variables habra que declararlas de la siguiente forma:(despus veremos otras formas de declarar las variables numricas)

    Dim i As IntegerDim s As String

    http://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Expresioneshttp://www.mundoprogramacion.com/NET/cursoVB.NET/glosarioNET.htm#Expresiones
  • 8/7/2019 Manual de Visual Basic Net(Muy able

    40/173

    40

    Con esto le estamos diciendo al vb.NET que reserve espacio en su memoria paraguardar un valor de tipo Integer, (numrico), en la variable i y que en la variable svamos a guardar valores de cadena de caracteres