Módulo_5_Clases Básicas del .NET Framework

104
MANIPULACION DE CADENAS DE CARACTERES CON STRING Y STRINGBUILDER © élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

description

Manipulación de cadenas de caracteres, DateTime; lista de interfaces, DateTime;lista de operadores, DateTime;lista de propiedades, Manipulación de fechas con DAteTime, Entrada y slaida por consola, Operaciones matemáticas, Colecciones, Bibliotecas en tiempo de ejecución, Prácticas.

Transcript of Módulo_5_Clases Básicas del .NET Framework

Page 1: Módulo_5_Clases Básicas del .NET Framework

MANIPULACION DE CADENAS DE

CARACTERES CON STRING

Y STRINGBUILDER

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 2: Módulo_5_Clases Básicas del .NET Framework

Introducción

Las cadenas, como ya comentamos en el módulo de tipos de datos, seimplementan con el tipo de datos String, que es un tipo de dato muyespecial, ya que no es un tipo de dato propiamente dicho, en realidad es unArray de caracteres Char, pero con propiedades y métodos exclusivos al tipode datos String.

Su utilidad, como es obvio, es la de almacenar cadenas de caracteres, decualquier longitud y permitir que realices con ellas las manipulacionesnecesarias.

Las variables String

Una de las particularidades de las variables de tipo String es que, si las modificas, no actúas directamenteen la variable, sino que se crea una nueva versión con los datos actualizados y se destruye la inicial.

Esto es debido a que uno de los métodos subyacentes del tipo de datos String es el redimensionamiento delArray de Char que tiene implícito. Esto hace que la ubicación de memoria ocupada inicialmente por lavariable pueda no disponer de espacio para la ampliación, por lo que directamente se crea la nueva en otraubicación, modificando la dirección de memoria referenciada por la variable.

Inicialmente una variable de tipo String contiene Nothing, que no es una cadena vacía, representa el que noestá asignada, por lo que antes de poder efectuar cualquier operación con la variable deberás asignarlealgún valor válido.

Valor de String

Un valor válido para un String es cualquier cadena de caracteres Unicode, desde la cadena vacía “”, hastaunos 2.000 millones de caracteres, siempre que el procesador y la memoria lo admitan.

MANIPULACION DE CADENAS DE CARACTERESCON STRING Y STRINGBUILDER

2

Page 3: Módulo_5_Clases Básicas del .NET Framework

Ejemplo

Si hemos de introducir el carácter de comillas dobles dentro del String, deberemos incluirlo dentro de otrasdos comillas dobles o duplicar el carácter, según la forma de asignarlo, tal como se muestra.

Dim cadena1 As String = “En este ejemplo las “ & “””” & “ van fuera.”Dim cadena2 As String = “En cambio aquí las “” van dentro.”

Funciones de manipulación

Para manipular las variables de tipo String disponemos, entre otras, de las funciones de manipulación decadena siguientes:

Len.- Devuelve la longitud de la cadenaMid.- Extrae el segmento indicado de la cadenaLeft.- Extrae n caracteres de la izquierda de la cadenaRight.- Extrae n caracteres de la derecha de la cadenaTrim.- Elimina los espacios en blancoRtrim.- Elimina los espacios en blanco a la derecha de la cadenaLtrim.- Elimina los espacios en blanco a la izquierda de la cadenaStr.- Convierte números a cadenasVal.- Convierte cadenas a númerosTestComp.- Permite comparar dos cadenasSplit.- Trocea una cadena en un Array con las palabras que la componen.

MANIPULACION DE CADENAS DE CARACTERESCON STRING Y STRINGBUILDER

3

Page 4: Módulo_5_Clases Básicas del .NET Framework

Ayuda

Como puedes comprobar hay unas cuantas, y esto no es más que una pequeña parte de las operaciones quepuedes realizar con una variable String, ya que, además de todas las funciones suministradas por VisualBasic, dispones de los métodos de la clase String más las funciones del .NET Framework relacionadas con laclase String.

Si buceas un poco por la ayuda de Visual Studio o en la página web de desarrollo de Microsoft www.msdn.com,verás la cantidad de recursos disponibles para operar con este y otros tipos de variables.

La clase StringBuilder

Para la manipulación de cadenas dispones de otra herramienta más potente que la clase String. La nueva clasese llama StringBuilder y está pensada para soportar cadenas de texto modificables, a diferencia de la claseString que es inmutable.

Esta clase está optimizada para las operaciones de concatenación de cadenas y tiene un gran rendimientoen este tipo de operaciones bastante habituales en la programación.

Tamaño

Al crear una nueva variable basada en este tipo de datos, tienes la posibilidad de asignarle el tamaño inicialde la misma, aunque es opcional, así como el tamaño máximo que puede alcanzar la cadena, y el valor inicialde la misma.

El tamaño de la cadena puede cambiarse a necesidad en el código, mediante la propiedad Capacity y eltamaño máximo mediante la propiedad MaxCapacity.

El tamaño actual de la cadena se obtiene mediante la propiedad Lenght.

Métodos específicos

Esta clase, además de la mayoría de operaciones de manipulación de cadenade las que dispone Visual Basic, expone unos métodos específicos, entre losque podemos destacar los siguientes:

Append.- Para añadir caracteres al final de la cadenaCopyTo.- Copia un segmento determinado de la cadena en un Array de Char.Insert.- Permite insertar en una posición específica de la cadena otra cadena.Remove.- Elimina un determinado segmento de la cadena.Replace.- Sustituye un segmento de la cadena por otra cadena suministrada.

MANIPULACION DE CADENAS DE CARACTERESCON STRING Y STRINGBUILDER

4

Page 5: Módulo_5_Clases Básicas del .NET Framework

Método Append

El método Append de la clase StringBuilder es bastante más eficaz que la operación &= de la clase String parala concatenación de cadenas.

Para poder utilizar la clase StringBuilder en Visual Basic es necesario importar el NameSpace System.Text,para no tener que calificar el nombre de la clase en cada aparición del mismo.

Ejemplo

Imports System.TextPublic Module Ejemplo Public Sub Main() ' Creamos un StringBuilder.Dim cadena As New StringBuilder(“Hola “)

' Solicitamos el nombre del usuario y lo almacenamos en un StringDim nombre as String = Console.Readline(“Dime tu nombre: “)

' Concatenamos el nombre al saludo y lo presentamos por pantallacadena.Append(nombre)Console.Writeline(cadena)End SubEnd Module

Manipulación de un StringBuilder

Como puedes ver en el ejemplo anterior, la manipulación de un StringBuilderno tiene la menor complicación y mejora bastante el rendimiento conrespecto a un String en cualquier operación en la que se tenga que modificarel contenido de la variable.

Síntesis

La clase String te permite almacenar datos de tipo cadena de caracteres y manipularlos en una ampliavariedad de formas, aunque cualquier modificación de los mismos implica un trasiego de referencias enmemoria.

En cambio la clase StringBuilder permite las mismas operaciones añadiendo la facilidad de permitir lasmodificaciones y estar optimizada para las operaciones de concatenación.

MANIPULACION DE CADENAS DE CARACTERESCON STRING Y STRINGBUILDER

5

Page 6: Módulo_5_Clases Básicas del .NET Framework

Resumen

Has llegado al final de esta lección de formación que denominamos “Manipulación de cadenas de caracterescon String y StringBuilder”

En esta lección hemos estudiado los siguientes contenidos:

MANIPULACION DE CADENAS DE CARACTERESCON STRING Y STRINGBUILDER

6

Page 7: Módulo_5_Clases Básicas del .NET Framework

MANIPULACION DEFECHAS CON

DATETIME

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 8: Módulo_5_Clases Básicas del .NET Framework

2

MANIPULACION DE FECHAS CON DATETIME

EL tipo de dato Date

La fechas se almacenan, en Visual Basic, en una variable del tipo de datos Date, la cual almacena 8 bytes de datos numéricos (64 bits) para contar el número de pasos o Ticks (1 paso = 100 nanosegundos) transcurridos desde la fecha inicial del rango representable hasta la fecha representada.

Los valores que se pueden almacenar con esta estructura son desde el 1 deenero del año 1, hasta el 31 de diciembre del año 9999. Las horas van, comoes lógico, desde las 00:00:00.00 hasta las 23:59:59.99.

Atención

EL tipo de dato Date de Visual Basic no es compatible con los formatos de fechas de otros lenguajes, por lotanto, hay que tener cuidado al pasar fechas entre funciones, sobre todo si hay la posibilidad de que esténdesarrolladas en otros lenguajes. Mejor pasar el valor como numérico y efectuar las pertinentes conversionesen ambos módulos.

Asignación literales de fechas

Para la asignación de literales a fechas, se debe incluir entre almohadillas (#) y no entre comillas (“) y elformato de la información ha de ser suministrado siempre en el formato anglosajón, es decir, mes, día yaño.

Aunque esto no es óbice para que se puedan presentar las fechas, posteriormente, en el formato que másinterese mediante la instrucción Format.

Valor por defecto

Cuando se crea una variable de tipo Date sin asignarle valor inicial, los valores por defecto son 1 de enerodel año 1 a las 00:00:00.00, pero hay una larga lista de sobrecargas en el constructor de esta clase como parapermitir inicializarla en la creación, como queramos. Echa un vistazo a la ayuda y verás.

EN .NET Framework, la equivalencia al tipo de datos Date es la estructuraSystem.DateTime.

Page 9: Módulo_5_Clases Básicas del .NET Framework

Creación de fechas

Para la creación de fechas, el tipo de datos Date dispone de varias versiones de su constructor (sobrecarga)que permiten que se pueda efectuar la declaración de muy diversas formas.

Ejemplos

‘ Todas estas son formas válidas y declaran la misma fechaDim fechaUno As New Date(2008, 5, 1, 8, 30, 52)Dim fechaDos As Date = #5/1/2008 8:30:52AM#Dim cadena As String = "5/1/2008 8:30:52 AM"Dim fechaTres As Date = Date.Parse(cadena, CultureInfo.InvariantCulture)‘ También se puede crear una variable para fecha, sin valor inicialDim fechaCuatro As Date‘ Otra forma es recuperar directamente mediante sus método scompartidos, los valores ‘ de fecha actual del tipo de datos.Dim fechaCinco As Date = Date.Now ‘Fecha de hoy completaDim fechaSeis As Date = Date.UtcNow ‘Fecha de hoy GMCDim fechaSiete As Date = Date.Today ‘Sólo la fecha de hoy, sin hora

Conversión de formato

Como se puede ver hay libertad a la hora de crear una fecha en el código, pero aún es mayor en las formasde mostrar fechas disponibles.

Como el valor realmente conservado en una variable Date es un valor numérico muy grande, cualquiervisualización de fecha implica una conversión de formato, por lo que se ha optimizado la clase para que lasconversiones den un buen rendimiento, además de permitir muchas combinaciones de valores de formato defecha.

Los elementos que se han tenido en cuenta en la instrucción ToString de formato de fecha son:

- El tipo de fecha que se desea mostrar (fecha corta, larga, fecha y hora, …)- La configuración regional del equipo y la que se desea mostrar.- Las normas internacionales.- Los requisitos del proyecto.

MANIPULACION DE FECHAS CON DATETIME

3

Page 10: Módulo_5_Clases Básicas del .NET Framework

Opción por defecto

Por defecto, este método, sin parámetros, mostrará la fecha almacenada en el formato de fecha corta y horalarga de la configuración regional del equipo en el que se esté ejecutando el programa, lo cual es muyconveniente, de ahí que sea la opción por defecto, ya que no hemos de preocuparnos de formatearadecuadamente, la fecha que el usuario está acostumbrado a ver, ya que el sistema lo haceautomáticamente.

Ejemplo de manipulación

Veamos un ejemplo de manipulación de variables de fecha:

Imports System.GlobalizationModule Module1

Sub Main()Dim cultures() As CultureInfo = {New CultureInfo("en-us"), _

New CultureInfo("fr-fr"), _New CultureInfo("de-DE"), _New CultureInfo("es-ES"), _New CultureInfo("ja-JP")}

Dim fechaHora As Date = Date.NowDim fechaGMC As Date = Date.UtcNowDim fecha As Date = Date.Today' Muestra las fechas por pantalla con diferentes formatosConsole.WriteLine("Formato por defecto")Console.WriteLine("fechaHora: " & fechaHora.ToString())Console.WriteLine("fechaGMC : " & fechaGMC.ToString())Console.WriteLine("fecha : " & fecha.ToString())Console.WriteLine()Console.ReadLine()Console.WriteLine("En cada uno de los formatos definidos")For Each culture As CultureInfo In cultures

Console.WriteLine("En {0}, {1}", _culture.Name, fechaHora.ToString(culture))

NextConsole.ReadLine()

End SubEnd Module

MANIPULACION DE FECHAS CON DATETIME

4

Page 11: Módulo_5_Clases Básicas del .NET Framework

Resultado

El resultado de ejecutar este ejemplo es:

Como se puede apreciar en el resultado de la ejecución, hay apreciables diferencias en los formatos de fechay hora del mundo, de ahí la necesidad de ser especialmente sensible a este tipo de cosas, ya que los usuariosse fijan rápidamente en este tipo de detalles.

Clases

Hay dos tipos de clases para la manipulación y representación de fechas:

La clase TimeSpan

Representa un intervalo de tiempo. Se utiliza para operaciones que deban utilizar un intervalo de tiempo paraagregarlo o restarlo de una determinada fecha u obtenerlo como diferencia entre fechas. Se utiliza la claseTimeSpan específica para intervalos de tiempo e integrada con la DateTime en sus operaciones.

La clase DateTime

Representa un instante de tiempo, normalmente expresado en forma de fecha y hora del día. Esta claseexpone muchos métodos para manipulación de fechas.

MANIPULACION DE FECHAS CON DATETIME

5

Page 12: Módulo_5_Clases Básicas del .NET Framework

Lista de métodos

La lista de métodos de esta clase es la que puedes ver a continuación:

Add, AddDays, AddHours, AddMiliseconds, AddMinutes, AddMonths, AddSeconds, AddTicks,AddYears, Compare, CompareTo, DaysInMonth, Equals, Finalize, FromBinary,FromFileTime, FromFileTimeUtc, FromOADate, GetDateTimeFormats, GetHashCode,GetType, GetTypeCode, IsDaylightSavingTime, IsLeapYear, MemberWiseClone, Parse,ParseExact, SpecifyKind, Subtract, ToBinary, ToFileTime, ToFileTimeUtc, ToLocalTime,ToLongDateString, ToLongTimeString, ToOADate, ToShortDateString, ToShortTimeString,ToString, ToUniversalTime, TryParse, TryParseExact

Síntesis

La clase Date de Visual Basic se corresponde con la System.DateTime del entorno .NET y es el tipo de datosque te permite almacenar y manipular de muy variadas formas los campos de fecha y hora.

Resumen

Has llegado al final de esta lección de formación que denominamos “Manipulación de fechas con DateTime”En esta lección hemos estudiado los siguientes contenidos:

MANIPULACION DE FECHAS CON DATETIME

6

Page 13: Módulo_5_Clases Básicas del .NET Framework

CLASES BÁSICASDEL .NET

FRAMEWORK

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 14: Módulo_5_Clases Básicas del .NET Framework

ENTRADA Y SALIDA POR CONSOLA

A estas alturas ya deberías tener claro que son las aplicaciones de consola, te he mostrado unascuantas y has llegado a desarrollar alguna, tanto en prácticas como en ejercicios, al menos si hashecho los deberes, claro.

Como espero que los hayas realizado adecuadamente, lo que te presente en esta unidad didácticano tiene porqué sorprenderte demasiado.

Básicamente se tratará de más de lo mismo, aunque profundizando un poco más en las posibilidadesde la clase Console.

Una de las cosas que aún no te había comentado, por aquello de no abrumarte con demasiadosdetalles cuando todo es demasiado nuevo, es que tanto la entrada, como la salida de una aplicaciónde consola pueden redirigirse. En castellano, la entrada de una aplicación de consola estágobernada por la propiedad Console.In, y la salida, adivina, a Console.Out, adicionalmente, loserrores van a Console.Error. Todas estas propiedades son modificables, con lo que puedes enviarlos mensajes de error a un archivo de log, por ejemplo, para una aplicación desatendida o unservicio. ¿Recuerdas que te comenté que se podían desarrollar con aplicaciones de consola?

Lo mismo ocurre con la entrada y la salida, puedes enviar la entrada a leer un archivo de texto conlas pulsaciones de usuario ya registradas (como hace una macro, más o menos) o la salida a unarchivo de texto para usarlo posteriormente.

Y esto, no sólo como ya vimos en un ejemplo mediante las técnicas de StreamReader /StreamWriter, sino cambiando directamente la dirección a la que apuntan las propiedades deConsole, incluso desde fuera del código, en las propiedades del proyecto. ¿No te parece que puedeser una solución elegante a algunos problemas de programas de servicio o de ejecucióndesatendida?

Pero ojo, no todas las operaciones de entrada / salida que funcionan perfectamente con los valorespor defecto, lo hacen igual de bien cuando se redirigen a un archivo, por lo que es muyrecomendable que implementes los controles de excepciones pertinentes para evitar que tusprogramas casquen en ejecución, y encima, no habrá usuario que se pueda enterar ni programadorque lo pueda resolver.

Por cierto, te habías fijado que no has necesitado crear ninguna instancia de esta clase parautilizarla en los programas. Esto es debido a que todos sus miembros son compartidos y a que,directamente, no es heredable ni instanciable, así se diseñó en su momento y así sigue.

CLASES BÁSICAS DEL .NET FRAMEWORK

2

Page 15: Módulo_5_Clases Básicas del .NET Framework

Bueno, llegados a este punto la verdad es que no sé si tienes claro que es la clase Console, el errortípico en el que caemos todos es asociar directamente esta clase a la ventana del DOS que nosaparece en cuanto ejecutamos una aplicación de consola. Pero no es eso, la ventana es unapropiedad de la clase Console, la cual dispone de métodos para cambiar su posición, tamaño,color, etc...

A continuación voy a intentar relacionarte los métodos y propiedades de la clase Console

disponibles y comentarte un poco su utilidad.

Primero los métodos:

Beep, te lo acabo de comentar, permite que suene un aviso sonoro

Clear, limpia la pizarra, te deja la ventana de consola limpita y resplandeciente para que lavuelvas a llenar J.

MoveBufferArea, te permite copiar y/o mover un área del buffer de la pantalla a otra.

OpenStandardError, abre la salida de errores para escritura “manual”

OpenStandardInput, lo mismo, pero para capturar la entrada.

OpenStandardOutput, tres cuartos de lo mismo, para la salida.

Read, lee un carácter de la entrada estándar In

ReadKey, lee cualquier tecla pulsada por el usuario, devolviendo un miembro de laenumeración ConsoleKey.

ReadLine, este te debe sonar, lee una línea completa de la entrada estándar In, quedándosea la espera hasta que el usuario pulsa <Intro>.

ResetColor, deja los colores de la consola en su valor original

SetBufferSize, modifica el tamaño del buffer de pantalla

SetCursorPosition, cambia la posición del cursor en la pantalla

SetError, redirecciona la salida estándar de errores

SetIn, redirecciona la entrada estándar In

SetOut, redirecciona la salida estándar Out

SetWindowPosition, como su nombre indica, cambia la posición de la ventana de la consola

CLASES BÁSICAS DEL .NET FRAMEWORK

3

Page 16: Módulo_5_Clases Básicas del .NET Framework

mostrada.

SetWindowSize, esta lo que cambia es el tamaño de la ventana mostrada.

Write, escribe una cadena de caracteres en la posición actual del cursor y lo deja posicionadodetrás del último carácter escrito.

WriteLine, este ya lo has utilizado, escribe una línea completa de caracteres en la pantalla,o una línea vacía, y pasa el cursor al inicio de la línea siguiente.

Ahora las propiedades, todas pueden ser leídas o cambiadas:

BackgroundColor, color de fondo de la pantalla, utiliza la enumeración ConsoleColor.

BufferHeight, número de líneas del buffer de pantalla.

BufferWidth, número de columnas del buffer de pantalla

CapsLock, deja las mayúsculas fijas o no.

CursorLeft, posición, en columnas, del cursor en el buffer de pantalla

CursorSize, tamaño visible del cursor en pantalla

CursorTop, posición, en filas, del cursor en el buffer de pantalla

CursorVisible, visibilidad del cursor.

Error, salida estándar de errores.

ForegroundColor, color de primer plano de los caracteres en pantalla, utiliza la enumeraciónConsoleColor.

In, salida estándar de la consola

InputEncoding, codificación de lectura de la entrada, útil si lees archivos de texto que vengancon codificación distinta de la estándar.

KeyAvailable, para saber si hay alguna tecla pulsada en la entrada

LargestWindowHeight, número máximo de filas que caben en la pantalla.

LargestWindowWidth, número máximo de columnas que caben en la pantalla

NumberLock, bloqueo numérico activo o no

CLASES BÁSICAS DEL .NET FRAMEWORK

4

Page 17: Módulo_5_Clases Básicas del .NET Framework

Out, la salida estándar

OutputEncoding, la tabla de codificación de la salida estándar

Title, el título de la ventana

TreatControlCAsInput, para indicar si Control + C es interrupción o tecleo normal.

WindowHeight, altura en líneas de la ventana

WindowLeft, posición izquierda de la ventana

WindowTop, posición superior de la ventana

WindowWidth, ancho de la ventana

Vamos a ver este ejercicio. Se trata de capturar lo que teclees por pantalla, utilizando losmétodos de Console, interpretarlo y mostrar el resultado.

Primero cambiaremos los colores de la consola.

Todo ello utilizando los métodos y propiedades que pone a tu disposición la clase Console.

CLASES BÁSICAS DEL .NET FRAMEWORK

5

Page 18: Módulo_5_Clases Básicas del .NET Framework

Imports System.TextModule Module1

Public Sub Main()Dim entrada As ConsoleKeyInfo‘ Cambiamos los colores de la pantallaConsole.BackgroundColor = ConsoleColor.GrayConsole.ForegroundColor = ConsoleColor.BlueConsole.Clear()‘ Bucle que se repetirá hasta que el usuario pulse la

‘ tecla <Esc>Do

Console.WriteLine(“Pulsa una tecla cualquiera, si quieres_combinando con mayúsculas, alt o control.”)

Console.WriteLine(“Para salir pulsa Escape.”)‘ Lee lo pulsadoentrada = Console.ReadKey(True)‘ Construye el mensaje de la tecla principal pulsadaDim salida As New StringBuilder(String.Format(“Has pulsado

“ & entrada.Key.ToString()))‘ Pasa a comprobar si se ha combinado con alguna de las

‘ indicadasDim complementos As Boolean‘ Si pulsaron le tecla <Alt>If (entrada.Modifiers And ConsoleModifiers.Alt) = ConsoleModifiers.Alt Thensalida.Append(“, y además “ & _ ConsoleModifiers.Alt.ToString())

complementos = TrueEnd If‘ Si pulsaron le tecla <Ctrl>If (entrada.Modifiers And ConsoleModifiers.Control) = _ConsoleModifiers.Control Then

If complementos Thensalida.Append(“ y “)

Elsesalida.Append(“, y además “)complementos = True

End Ifsalida.Append(ConsoleModifiers.Control.ToString)

End If‘ Si pulsaron le tecla <Mayúsculas>If (entrada.Modifiers And ConsoleModifiers.Shift) = _

ConsoleModifiers.Shift ThenIf complementos Then

salida.Append(“ y “)Else

salida.Append(“, y además “)End Ifsalida.Append(ConsoleModifiers.Shift.ToString)

End Ifsalida.Append(“.”)‘ Muestra el resultado por pantalla Console.WriteLine(salida.ToString())Console.WriteLine()‘ Bucle a esperar la siguiente pulsación

Loop While entrada.Key <> ConsoleKey.EscapeConsole.readLine()

End SubEnd Module

CLASES BÁSICAS DEL .NET FRAMEWORK

6

Page 19: Módulo_5_Clases Básicas del .NET Framework

Aunque te pueda parecer complicado si lo sigues con calma verás que es muy sencillo decomprender.

El resultado de una ejecución de prueba podría ser el siguiente:

EN RESUMEN

Acabamos de repasar todas las posibilidades de gestión de la entrada y salida de lasaplicaciones de consola.

CLASES BÁSICAS DEL .NET FRAMEWORK

7

Page 20: Módulo_5_Clases Básicas del .NET Framework

OPERACIONES MATEMÁTICAS: CLASES MATH Y

RANDOM

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 21: Módulo_5_Clases Básicas del .NET Framework

2

OPERACIONES MATEMÁTICAS: CLASES MATH Y RANDOM

Introducción

Las operaciones matemáticas son, evidentemente, aquellas que se puedenefectuar con tipos de datos numéricos, produciéndose una excepciónespecífica en el caso de intentarse realizar una de estas operaciones condatos que no sean de este tipo.

Lo cual no implica, necesariamente, que las variables estén declaradas comopertenecientes a tipos de datos numéricos, pueden ser, por ejemplo, de tipoString, pero si la cadena contenida está compuesta por cifras, la operaciónmatemática funcionaría.

Principales funciones aritméticas

Las principales funciones aritméticas, organizadas por propósito, disponibles en Visual Basic son lassiguientes:

Randomize.- Complementaria de la siguiente, pone en marcha el generador de números aleatorios.Rnd.- Genera números aleatorios, del tipo Single, a partir de la inicialización efectuada por Randomize.Abs.- Devuelve al valor absoluto de un número pasado.Exp.- Eleva E a la potencia indicada.Log.- Logaritmo de un número.Sqrt.- Saca la raíz cuadrada de un número pasado.Atan.- Arcotangente del número pasado.Cos.- Coseno del número pasado.Sin.- Seno del número pasado. Tan.- Tangente del número pasado.Fix.- Devuelve la parte entera de un número pasado, redondeo arriba.Int.- Devuelve la parte entera de un número pasado, redondeo abajo.Sign.- Devuelve el signo de un número como una cifra numérica.

Page 22: Módulo_5_Clases Básicas del .NET Framework

Principales clases relacionadas

Las principales clases suministradas por el entorno .Net Framework relacionadas con las operacionesaritméticas son:

Math: La base para todas las operaciones aritméticas, logarítmicas y trigonométricas, que tiene los miembroscompartidos siguientes:Abs, Acos, Asin, Atan, Atan2, BigmUl, Ceiling, Cos, Cosh, DivRem, Exp, Floor, IeeeRemainder, Log, Log10,Max, Min, Pow, Round, Sign, Sin, Sinh, Sqrt, Tan, Tanh, Truncate.Dispone de los campos estáticos E y PI, muy útiles en los cálculos matemáticos.

Random: La clase del entorno que ofrece soporte para la generación de números aleatorios, función muyutilizada en el desarrollo de aplicaciones y que ofrece los siguientes métodos: Next, NextBytes, NextDouble,Sample

En ambos casos, además de los métodos relacionados, las clases disponen de todos los métodos heredadosde la clase Object, de la que todas las clases del entorne derivan.

Como podrás comprobar, todas las funciones matemáticas que nos ofrece Visual Basic dependen de las clasescorrespondientes del .NET Framework, como no podía ser de otro modo. Por lo que están totalmenteintegradas en el entorno y no ofrecerán ningún tipo de problema en las referencias cruzadas de módulos dedistintos lenguajes.

OPERACIONES MATEMÁTICAS: CLASES MATH Y RANDOM

3

Page 23: Módulo_5_Clases Básicas del .NET Framework

Ejemplo

Como ejemplos de algunas de las funciones relacionadas valga el siguiente:

Public Class TrianguloRectanguloPrivate _cateto1 As DoublePrivate _cateto2 As DoublePublic Sub New(ByVal cateto1 As Double, ByVal cateto2 As Double)

_cateto1 = Math.Abs(cateto1)_cateto2 = Math.Abs(cateto2)

End SubPublic Function GetCateto1() As Double

Return _cateto1End FunctionPublic Function GetCateto2() As Double

Return _cateto2End FunctionPublic Function GetHipotenusa() As Double

Return Math.Sqrt(Math.Pow(_cateto1, 2) + Math.Pow(_cateto2, 2))End Function

End Class

Module Module1Sub Main()

Dim Entrada As StringDim Cateto1 As DoubleDim Cateto2 As DoubleDo

Console.Write("Indica el valor del primer cateto: ")Cateto1 = Double.Parse(Console.ReadLine())Console.WriteLine()Console.Write("Indica el valor del segundo cateto: ")Cateto2 = Double.Parse(Console.ReadLine())Console.WriteLine()Dim Ejemplo As TrianguloRectangulo = New TrianguloRectangulo(Cateto1, Cateto2)Console.WriteLine("La hipotenusa es: " & Ejemplo.GetHipotenusa())Console.WriteLine()

Console.WriteLine("Teclea ""C"" + <Intro> para finalizar o sólo <Intro> para otro triángulo")Entrada = Console.ReadLine()

Loop While Entrada.ToString().ToUpper() <> "C"End Sub

End Module

OPERACIONES MATEMÁTICAS: CLASES MATH Y RANDOM

4

Page 24: Módulo_5_Clases Básicas del .NET Framework

Ejecución

El resultado en una ejecución de pruebas es el siguiente.

Como ves, no hay ninguna complicación en la utilización de este tipo de funciones.

Síntesis

Has comprobado que las funciones matemáticas soportadas por Visual Basic son suministradas por las clasesMath y Random del entorno .NET y que cubren las más habituales operaciones matemáticas utilizadas endesarrollo.

Resumen

Has llegado al final de esta lección de formación que denominamos “Operaciones Matemáticas: Clases Mathy Random”

En esta lección hemos estudiado los siguientes contenidos:

OPERACIONES MATEMÁTICAS: CLASES MATH Y RANDOM

5

Page 25: Módulo_5_Clases Básicas del .NET Framework

COLECCIONES

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 26: Módulo_5_Clases Básicas del .NET Framework

2

COLECCIONES

Introducción

Las colecciones son, como su nombre indica, grupos ordenados de objetosrelacionados que, normalmente, dependen de otro objeto.

Por ejemplo, las propiedades de un objeto son una colección, sus métodostambién, aunque una colección no es la forma más adecuada paragestionarlos.

Uso

Las colecciones permiten una operativa sobre el grupo completo y recorrer la lista mediante una instrucciónde bloque, como puede ser For Each…Next. También se puede acceder mediante índice a cada uno de loselementos, numérico o de cadena.

De hecho, esta instrucción está particularmente optimizada para recorrercolecciones y dar acceso secuencial a cada uno de los elementos que lacomponen, sin tener que conocer de antemano el número de ítems quecontiene la colección ni siquiera su tipo de datos, ya que los elementos deuna colección no han de ser necesariamente todos del mismo tipo.

Colecciones propias

Las colecciones disponen de una serie de operaciones asociadas que permiten operar sobre los elementos deforma individual o conjunta. Por ejemplo el método Add permite añadir un elemento a la colección, si éstalo permite.

En Visual Basic existe la clase Collection, la cual permite crear las propias colecciones, aunque no está basadaen la misma clase del entorno como las colecciones predefinidas del sistema, y no son compatibles entre sí,aunque su funcionalidad es similar.

Diferencia entre colecciones

Una de las diferencias entre ambas es que las colecciones predefinidas del entorno inician suíndice en 0, como casi todos los índices del entorno, mientras que las colecciones creadas poruno mismo en Visual Basic, mediante la clase Collection, iniciarán su índice en 1 para mantenerla compatibilidad con las versiones anteriores, así como para facilitar el uso al desarrollador.

Page 27: Módulo_5_Clases Básicas del .NET Framework

Esta diferencia no es demasiado útil ya que puede ocurrir que se intente acceder al primer elemento de lacolección con este índice, y al estar acostumbrado a que empiece en 0, de una excepción de índice fuera derango IndexOutOfRangeException, sobre todo si el índice de acceso se genera en tiempo de ejecución y elcompilador no puede detectar el problema a tiempo.

Por lo tanto, hay que tener cuidado con este tema, ya que es muy fácil caer en el error.

Collection de Visual Basic

Con estas clases se pueden crear diferentes tipos de colecciones, las cuales tienen como elementodiferenciador el que se pueda o no agregarles elementos y, en caso afirmativo, en el modo en el que sepueden agregar.

Lógicamente, las colecciones que se creen mediante la clase Collection de Visual Basic, disponen de losmétodos para añadir y eliminar elementos, pero las clases implícitas del sistema no siempre tienen estosmétodos definidos.

Métodos definidos para las colecciones

Los métodos definidos para las colecciones que se pueden crear con la claseCollection de Visual Basic son los siguientes:

Sólo hay un par de propiedades definidas, ambas de sólo lectura, aunque elsistema se encarga de actualizarlas internamente.

Add.- Para añadir elementos a la colección.Clear.- Para eliminar todos los elementos de la colección.Contains.- Para averiguar si un elemento está en la colección.GetEnumerator.- Para obtener el objeto de tipo enumerador para recorrerlos elementos de la colección, el que utiliza la instrucción For Each…Next.Normalmente no se utiliza, salvo que se quiera un control personalizado delrecorrido, como puede ser volver al principio, saltar algún elemento o si lacolección cambia a la mitad de haberla recorrido.Remove.- Para eliminar elementos de la colección.

Count.- Para contar el número de elementos contenidos en la colección.Item.- Para recuperar un elemento concreto de la colección.

COLECCIONES

3

Page 28: Módulo_5_Clases Básicas del .NET Framework

Ejemplo de utilización

A continuación vamos a ver un ejemplo de utilización de colecciones que aclare un poco todos estos términosy la mecánica de funcionamiento.

Es posible que alguna vez hayas tenido que lidiar con una lista de tareas que has mantenido en algún blocde notas, cualquier pedazo de papel, una agenda,…etc, y casi siempre de forma poco satisfactoria.Vamos a ver si con este esbozo te planteas un desarrollo algo más profesional y creas tu propia lista de tareaspersonaliza, ya que esto es sólo un apunte básico de lo que podrías llegar a generar.

Lo primero que echarás en falta es la persistencia de la información, lógico, aún no has visto como gestionarla información en disco. Además, como de momento sólo hemos visto el interfaz de consola, no serávisualmente espectacular, pero lo podrás mejorar muchísimo con formularios Windows.

Definición

Primero, la clase con la que definimos una tarea.

Public Class TareaPublic Titulo As StringPublic Descripcion As StringPublic Limite As DatePublic Completada As BooleanPublic Sub New(ByVal t As String, ByVal d As String, ByVal l As Date, _

ByVal c As Boolean)Titulo = tDescripcion = dLimite = lCompletada = c

End SubEnd Class

COLECCIONES

4

Page 29: Módulo_5_Clases Básicas del .NET Framework

Gestión

Ahora veremos cómo gestionarlo.

Module Module1' Creamos la colección y definimos las variable para manipular su contenidoPublic tareas As New Microsoft.VisualBasic.Collection()Public titulo As StringPublic descripcion As StringPublic limite As DatePublic completada As BooleanPublic entrada As StringSub Main()

' Presentamos un menú mínimo de opciones al usuario.Do

Console.Clear()Console.WriteLine(" Menú de gestión de las tareas")Console.WriteLine("*******************************")Console.WriteLine()Console.WriteLine("1 - Ver las tareas de la lista")Console.WriteLine("2 - Añadir una tarea")Console.WriteLine("3 - Eliminar una tarea")Console.WriteLine()Console.WriteLine("Cualquier otra - Salir")entrada = Console.ReadLine().ToUpper()

Select Case entradaCase "1"

MostrarLista()Console.ReadLine()

Case "2"Agregar()

Case "3"Eliminar()

Case ElseExit Do

End SelectLoop

End SubPublic Sub MostrarLista()

Dim contador As Integer = tareas.Count()If contador = 0 Then

Console.WriteLine("No hay elementos en la lista de tareas")

COLECCIONES

5

Page 30: Módulo_5_Clases Básicas del .NET Framework

ElseConsole.WriteLine("Título Descripción Límite Completada")For Each t As Tarea In tareas

Console.WriteLine(t.Titulo & " " & t.Descripcion & " " & t.Limite & _" " & t.Completada)

Next tEnd If

End Sub

Public Sub Agregar()Console.Write("Introduce el título de la tarea: ")titulo = Console.ReadLine()Console.Write("Introduce la descripción de la tarea: ")descripcion = Console.ReadLine()Console.Write("Introduce la fecha límite, mm/dd/aaaa: ")limite = Date.Parse(Console.ReadLine())Console.Write("Finalizada S/N: ")entrada = Console.ReadLine().ToUpper()If entrada = "S" Then

completada = TrueElse

completada = FalseEnd IfDim t As Tarea = New Tarea(titulo, descripcion, limite, completada)tareas.Add(t, titulo)Console.WriteLine("La tarea ha sido añadida a la lista")Console.ReadLine()

End Sub

Public Sub Eliminar()Dim existe As BooleanMostrarLista()Console.Write("Introduce el título de la tarea que deseas eliminar: ")titulo = Console.ReadLine()existe = tareas.Contains(titulo)If existe Then

tareas.Remove(titulo)Console.WriteLine("El título indicado ha sido eliminado de la lista")

ElseConsole.WriteLine("El título indicado no existe en la lista")

End IfConsole.ReadLine()

End SubEnd Module

COLECCIONES

6

Page 31: Módulo_5_Clases Básicas del .NET Framework

Ejecución

Como ves, las cosas se complican un poco cuando queremos dar algo de funcionalidad, ya que hemos utilizadola mayoría de los métodos y propiedades de la clase.

Si creamos un par de tareas y luego mostramos la lista, el resultado podría ser el que vemos más abajo. Noestá mostrada la ejecución de todas las opciones, pero funcionan y te animamos a probarlas todas.

Para los propósitos del ejemplo, para esta ejecución hemos comentado el Console.Clear() que hay al iniciodel menú, para que se mantuviera el rastro en pantalla, pero es más elegante dejarlo puesto para quesiempre se vea la pantalla limpia con lo que el usuario ha de ejecutar.

Síntesis

Hemos visto que las colecciones nos pueden ser útiles para gestionar listas de elementos coherentes ymanejarlos como un todo, con funciones de acceso individual a los elementos y de recorrido de la lista.

Resumen

Has llegado al final de esta lección de formación que denominamos “Colecciones”En esta lección hemos estudiado los siguientes contenidos:

COLECCIONES

7

Page 32: Módulo_5_Clases Básicas del .NET Framework

CLASES BÁSICASDEL .NET

FRAMEWORK

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 33: Módulo_5_Clases Básicas del .NET Framework

BIBLIOTECAS EN TIEMPO DE EJECUCIÓN

Es la biblioteca más importante orientada a la compatibilidad de las futuras aplicaciones con las versionesanteriores. Tiene un conjunto de funciones que nos permite la realización de tareas básicas en nuestrosprogramas y se encuentra en el espacio de nombres System. Microsoft. Visual basic.

Todos los miembros pertenecientes a esta biblioteca se pueden usar directamente en nuestros programas yaque la referencia al espacio de nombres es característica en nuestras soluciones.

Microsoft.VisualBasic.Collection

Veremos todas sus características mas adelante.

AddCountGetEnumeratorItemRemove

Microsoft.VisualBasic.Conversion

ErrorToString

Convierte un código de error en una cadena de caracteres.Fix

Quita decimales de un número o expresión.

TextBox1.Text = Fix(TextBox2.Text)Hex

Devuelve una cadena de caracteres que es la expresión en hexadecimal del número que se le pasacomo argumento

TextBox1.Text = Hex(TextBox2.Text)Int

Devuelve la parte entera de un número o expresión que se le pasa como argumento, quita losdecimales. La diferencia con Fix es cuando se tratan números negativos.Si en textbox2 hay -12,45

MessageBox.Show(Int(TextBox2.Text))Devuelve -13

MessageBox.Show(Fix(TextBox2.Text))Devuelve -12

CLASES BÁSICAS DEL .NET FRAMEWORK

2

Page 34: Módulo_5_Clases Básicas del .NET Framework

OctDevuelve una cadena que es el valor Octal del número o expresión que se le pase como argumentoa la función.

StrDevuelve un número convertido en un string.

ValConvierte una cadena de caracteres que tiene un número en un número real.

MessageBox.Show(Val(“234.567”) * 200)

Microsoft.VisualBasic.DateAndTime

DateAddDevuelve una fecha que es el resultado de añadir a otra fecha un número de veces determinado unintervalo específico de fechas como pueden ser: semanas, meses, trimestres, años, horas, minutos,segundos, etc.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickTextBox1.Text = DateAdd(DateInterval.Month, CInt(TextBox2.Text), Now)End Sub

En este ejemplo se va a escribir en la primera caja de texto del formulario una fecha correspondiente a lafecha de hoy más un número de meses, que viene especificado en una segunda caja de texto.

Todos los intervalos de fechas tienen una constante interna representativa.

DateDiffDevuelve un número correspondiente a la diferencias de intervalos de fechas correspondiente entredos fechas.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickTextBox1.Text =DateDiff(DateInterval.WeekOfYear, #12/4/1999#, Now)End Sub

CLASES BÁSICAS DEL .NET FRAMEWORK

3

Page 35: Módulo_5_Clases Básicas del .NET Framework

El código nos devuelve 146, numero de semanas entre en día 12 de abril de 1999 y la fecha actual. Podemosobservar cómo se especifican las fechas y la existencia de una función Now que nos devuelve la fecha y horasdel sistema.

DatePartDevuelve un número correspondiente a la parte de un intervalo de fecha determinado en que cae lafecha especificada.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickTextBox1.Text =

DatePart(DateInterval.WeekOfYear, Now)End Sub

El código anterior devuelve 38 puesto que la fecha actual cae en la 38 semana del año, dado que este es elintervalo elegido de fechas.

DateSerialCrea un dato de tipo fecha especificando el año, mes y DIA en números.

TextBox1.Text = DateSerial(2002, 11, 23)

DateStringCrea un dato de tipo fecha especificando la misma como una cadena de caracteres, siempre que estatenga el formato de fechas entendible por VB, primero el DIA, después el mes y finalmente el año.

DateValueDevuelve el valor de una fecha, de una fecha representada como una cadena de caracteres.

DayEs una enumeración que devuelve el valor numérico de un DIA de la semana, que se encuentra comoconstante en esta enumeración

MessageBox.Show(Day.Sunday)Devuelve un 6

HourDevuelve la hora de la fecha u hora especificada.

MessageBox.Show(Hour(Now))

CLASES BÁSICAS DEL .NET FRAMEWORK

4

Page 36: Módulo_5_Clases Básicas del .NET Framework

MinuteDevuelve los minutos de una fecha u hora especificada.

MonthDevuelve el número del mes de una fecha especificada.

MonthNameDevuelve el nombre del mes de una fecha especificada.

NowDevuelve la fecha y hora actual.

SecondDevuelve el segundo de una fecha u hora especificada.

TimeOfDayDevuelve la hora, minuto y segundos del DIA.MessageBox.Show(TimeOfDay())

TimeSerialEstablece un dato de tipo hora, especificando las horas, minutos y segundos

MessageBox.Show(TimeSerial(22, 3, 22))

TimeStringEstablece un dato de tipo hora, especificando como una cadena de caracteres.

TimeValueDevuelve el valor de un dato de tipo hora, especificándolo como una cadena.

TodayDevuelve la fecha actual del sistema

MessageBox.Show(Today)

WeekDayDevuelve el DIA de la semana de la fecha especificada

MessageBox.Show(Weekday(Today))Si la fecha cae en viernes devuelve 6

CLASES BÁSICAS DEL .NET FRAMEWORK

5

Page 37: Módulo_5_Clases Básicas del .NET Framework

WeekDayNameDevuelve el nombre del DIA de la semana.

MessageBox.Show(WeekdayName(Weekday(Today), False))Si el DIA cae en viernes devuelve viernes.

YearDevuelve el año de una fecha especificada

Microsoft.VisualBasic.ErrObjectVeremos todas sus características mas adelante.

ClearDescriptionErlGetExceptionHelpContextHelpFileLastDLLErrorNumberRaiseSource

Microsoft.VisualBasic.FileSystemVeremos todas sus características mas adelante.

ChDirChDriveCurDirDirEOFFileAttrFileCloseFileCopyFileDateTimeFileGetFileLenFileOpenFilePut

CLASES BÁSICAS DEL .NET FRAMEWORK

6

Page 38: Módulo_5_Clases Básicas del .NET Framework

FileWidthFreeFileGetAttrInputInputStringKillLineInputLocLockLOFMkDirPrintPrintLineRenameResetRmDirSeekSetAttrSPCTABUnlockWriteWriteLine

Microsoft.VisualBasic.FinancialSon funciones muy específicas que no se comentaran

DDBFVIPmtIRRMIRRNPerNPVPmtPPmtPVRateSLNSYD

CLASES BÁSICAS DEL .NET FRAMEWORK

7

Page 39: Módulo_5_Clases Básicas del .NET Framework

Microsoft.VisualBasic.Globals

Estas características se verán en manuales avanzados.

ScriptEngineScriptEngineBuildVersionScriptEngineMajorVersionScriptEngineMinorVersion

Microsoft.VisualBasic.Information

ErrIsArrayIsDateIsDBNullIsErrorIsNothingIsNumericIsReferenceLBoundQBColor

Genera un color plano, uno de los 16 colores básicos, hay que especificar el número correspondiente al colorbásico a generar.

RGBEs una función que devuelve un color, resultado de la combinación de los tres colores básicos comoson el ROJO, VERDE y el AZUL, los valores a otorgar para cada uno de estos colores solo pueden estarcomprendidos entre 0 y 255.

SystemTypeNameTypeNameUBoundVarTypeVbTypeName

CLASES BÁSICAS DEL .NET FRAMEWORK

8

Page 40: Módulo_5_Clases Básicas del .NET Framework

Microsoft.VisualBasic.Interaction

AppActivateBeepCallByNameChooseCommandCreateObjectDeleteSettingEnvironGetAllSettingsGetObjectGetSettingIIfInputBoxMsgBoxPartitionSaveSettingShellSwitch

Microsoft.VisualBasic.Strings

Hay una clase denominada String que dispone de una serie de métodos y propiedades que tienencaracterísticas muy parecidas a las funciones que a continuación listamos.

AscAscWChrChrWFilterFormatFormatCurrencyFormatDateTimeFormatNumberFormatPercentGetChar

CLASES BÁSICAS DEL .NET FRAMEWORK

9

Page 41: Módulo_5_Clases Básicas del .NET Framework

InStrInStrRevJoinLCaseLeftLenLSetLTrimMidReplaceRightRSetRTrimSpaceSplitStrCompStrConvStrDupStrReverseTrimUCase

Microsoft.VisualBasic.VbMath

Randomize

Genera la semilla de un número aleatorio

RndGenera un número aleatorio.

CLASES BÁSICAS DEL .NET FRAMEWORK

10

Page 42: Módulo_5_Clases Básicas del .NET Framework

FORMULARIOS

Es el objeto mas importante de nuestras aplicaciones ya que representa las ventanas de ellas, prácticamentetodas las aplicaciones de Windows tiene un conjunto de ventanas de las que el usuario hace la mayoría delas tareas.

Ahora veremos una relación de las propiedades, eventos y me todos posibles a usar con formularios. A pesarde no haber visto hasta ahora programación orientada a objetos, POO, podemos decir que un formulario esun objeto y tiene una apariencia, forma de presentarse, realiza unas tareas y responde a acciones. Al aspectose le denomina PROPIEDADES, a las tareas METODOS y a la forma de responder ante determinadascircunstancias EVENTOS. Para acceder a estas propiedades lo haremos a través de la ventana propiedades trasseleccionar el formulario. Es posible establecer las propiedades desde el código de programa.

A la hora de seleccionar para codificar eventos, en la ventana del editor de código, desplegamos el cuadrocombinado que esta en la parte superior izquierda que muestra todos los objetos disponibles en el proyectopara poder ser codificados y elegimos eventos de la clase base , en ese momento si desplegásemos el cuadrocombinado de la parte superior derecha veríamos que están todos los eventos disponibles para sercodificados.

PROPIEDADES PÚBLICAS

AcceptButtonEs el botón de los que hay en el formulario que se activa al pulsar RETURN.

AccessibilityObjectObtiene AccessibilityObject asignado al control.

AccessibleDefaultActionDescription.Obtiene o establece la descripción de la acción predeterminada del control que las aplicaciones cliente deaccesibilidad utilizan.

AccessibleDescriptionObtiene o establece la descripción del control que las aplicaciones cliente de accesibilidad utilizan.

AccesibleNameObtiene o establece el nombre del control que las aplicaciones cliente de accesibilidad utilizan.

CLASES BÁSICAS DEL .NET FRAMEWORK

11

Page 43: Módulo_5_Clases Básicas del .NET Framework

AccesibleRoleObtiene o establece la función accesible del control.

ActiveControlObtiene o establece el control activo en el control contenedor.

ActiveFormObtiene el formulario activo actual para esta aplicación.

ActiveMdiChildObtiene la ventana MDI (interfaz de múltiples documentos) secundaria activa actual.

AllowDropObtiene o establece un valor que indica si el control puede aceptar los datos que el usuario arrastra al mismo.

AnchorObtiene o establece los bordes del control que se acoplan a los bordes de su contenedor.

AutoScaleObtiene o establece un valor que indica si el formulario ajusta su tamaño y el de sus controles al alto de lafuente que utiliza.

AutoScaleBaseSizeObtiene o establece el tamaño base para el ajuste automático del tamaño del formulario.

AutoScrollObtiene o establece un valor que indica si en el formulario se permite el desplazamiento.

AutoScrollMarginObtiene o establece el tamaño del margen de desplazamiento automático.

AutoScrollMinSizeObtiene o establece el tamaño mínimo del desplazamiento automático.

AutoScrollPositionObtiene o establece la ubicación de la posición de desplazamiento automático.

CLASES BÁSICAS DEL .NET FRAMEWORK

12

Page 44: Módulo_5_Clases Básicas del .NET Framework

BackColor

BackGroundImageObtiene o establece la imagen de fondo que se muestra en el control.

BindingContextObtiene o establece BindingContext del control.

BottomObtiene la distancia que existe entre el borde inferior del control y el borde superior del área cliente de sucontenedor.

BoundsObtiene o establece el tamaño y la ubicación del control.

CancelButtonObtiene o establece el control de botón que se activará cuando el usuario presione la tecla ESC.

CanFocusObtiene un valor que indica si el control puede recibir el foco.

CanSelectObtiene un valor que indica si el control se puede seleccionar.

CaptureObtiene o establece un valor que indica si el control ha capturado el mouse (ratón).

CausesValidationObtiene o establece un valor que indica si el control hace que se realice una validación de todos los controlesque requieren validación cuando reciben el foco.

ClientRectangleObtiene el rectángulo que representa el área cliente del control.

ClienSizeObtiene o establece el tamaño del área cliente del formulario.

CompanyNameObtiene el nombre de la compañía o del creador de la aplicación que contiene el control.

CLASES BÁSICAS DEL .NET FRAMEWORK

13

Page 45: Módulo_5_Clases Básicas del .NET Framework

ContainerObtiene ICOntainer que contiene Componen.

ContainsFocus Obtiene un valor que indica si el control, o uno de sus controles secundarios, tiene el foco de entrada en laactualidad.

ContextMenu Obtiene o establece el menú contextual asociado al control.

ControlBoxObtiene o establece un valor que indica si se muestra un cuadro de control en la barra de título delformulario.

Controls Obtiene la colección de controles que contiene el control.

Created Obtiene un valor que indica si se ha creado el control.

Cursor Obtiene o establece el cursor que se muestra cuando el puntero del mouse se sitúa sobre el control.

DataBindings Obtiene los enlaces de datos del control.

DesktopBoundsObtiene o establece el tamaño y la posición del formulario en el escritorio de Windows.

DesktopLocationObtiene o establece la posición del formulario en el escritorio de Windows.

DialogResultObtiene o establece el resultado de cuadro de diálogo para el formulario.

DisplayRectangle Obtiene el rectángulo que representa el área de presentación del control.

CLASES BÁSICAS DEL .NET FRAMEWORK

14

Page 46: Módulo_5_Clases Básicas del .NET Framework

Disposing Obtiene un valor que indica si el control está en proceso de eliminación.

Dock Obtiene o establece el borde del contenedor principal al que está acoplado un control.

DockPadding Obtiene la configuración de relleno de acople para todos los bordes del control.

Enabled Obtiene o establece un valor que indica si el control puede responder a la interacción del usuario.

Focused Obtiene un valor que indica si el control tiene el foco de entrada.

Font Obtiene o establece la fuente del texto que muestra el control.

ForeColor Obtiene o establece el color de primer plano del control.

FormBorderStyleObtiene o establece el estilo del borde del formulario.

Handle Obtiene el identificador de ventana al que está enlazado el control.

HasChildren Obtiene un valor que indica si el control contiene uno o más controles secundarios.

Height Obtiene o establece el alto del control.

HelpButtonObtiene o establece un valor que indica si se muestra un botón de ayuda en el cuadro de título del formulario.Icon.

Obtiene o establece el icono del formulario.

CLASES BÁSICAS DEL .NET FRAMEWORK

15

Page 47: Módulo_5_Clases Básicas del .NET Framework

ImeMode Obtiene o establece el modo de Editor de métodos de entrada (IME) del control.

InvokeRequired Obtiene un valor que indica si el llamador debe llamar a un método de invocación cuando realiza llamadasa métodos del control porque el llamador se encuentra en un subproceso distinto al del control donde se creó.

IsAccessible Obtiene o establece un valor que indica si el control es visible para las aplicaciones de accesibilidad.

IsDisposed Obtiene un valor que indica si el control se ha eliminado.

IsHandleCreated Obtiene un valor que indica si el control tiene un identificador asociado.

IsMdiChildObtiene un valor que indica si el formulario es un formulario MDI (interfaz de múltiples documentos)secundario.

IsMdiContainerObtiene o establece un valor que indica si el formulario es un contenedor para formularios MDI (interfaz demúltiples documentos) secundarios.

KeyPreviewObtiene o establece un valor que indica si el formulario recibe los eventos clave antes de que pasen al controlque tiene el foco.

Left Obtiene o establece la coordenada x del borde izquierdo de un control, en píxeles.

Location Obtiene o establece las coordenadas de la esquina superior izquierda del control en relación con la esquinasuperior izquierda de su contenedor.

MaximizeBoxObtiene o establece un valor que indica si se muestra el botón Maximizar en la barra de título del formulario.

CLASES BÁSICAS DEL .NET FRAMEWORK

16

Page 48: Módulo_5_Clases Básicas del .NET Framework

MaximumSizeObtiene el tamaño máximo al que puede ajustarse el formulario.

MdiChildrenObtiene una matriz de formularios que representan los formularios MDI (interfaz de múltiples documentos)secundarios del formulario.

MdiParentObtiene o establece el formulario MDI (interfaz de múltiples documentos) principal actual de este formulario.

MenuObtiene o establece el MainMenu que se muestra en el formulario.

MergedMenuObtiene el menú combinado del formulario.

MinimizeBoxObtiene o establece un valor que indica si se muestra el botón Minimizar en la barra de título del formulario.

MinimumSizeObtiene el mínimo tamaño al que puede ajustarse el formulario.

ModalObtiene un valor que indica si el formulario se muestra de forma modal.

Name Obtiene o establece el nombre del control.

OpacityObtiene o establece el nivel de opacidad del formulario.

OwnedFormsObtiene una matriz de objetos Form que representa todos los formularios que posee dicho formulario.

OwnerObtiene o establece el formulario propietario de este formulario.

Parent Obtiene o establece el contenedor principal del control.

CLASES BÁSICAS DEL .NET FRAMEWORK

17

Page 49: Módulo_5_Clases Básicas del .NET Framework

ParentForm Obtiene el formulario al que está asignado el control contenedor.

ProductName Obtiene el nombre de producto del ensamblado que contiene el control.

ProductVersion Obtiene la versión del ensamblado que contiene el control.

RecreatingHandle Obtiene un valor que indica si el control está volviendo a crear su identificador en la actualidad.

Region Obtiene o establece la región de ventana asociada al control.

Right Obtiene la distancia entre el borde derecho del control y el borde izquierdo de su contenedor.

RightToLeft Obtiene o establece un valor que indica si los elementos del control se alinean para admitir configuracionesregionales utilizando fuentes de derecha a izquierda.

ShowInTaskbarObtiene o establece un valor que indica si se muestra el formulario en la barra de tareas de Windows.

Site Obtiene o establece el sitio del control.

SizeObtiene o establece el tamaño del formulario.

SizeGripStyleObtiene o establece el estilo del control de tamaño que se muestra en el ángulo inferior derecho delformulario.

StartPositionObtiene o establece la posición inicial del formulario en tiempo de ejecución.

CLASES BÁSICAS DEL .NET FRAMEWORK

18

Page 50: Módulo_5_Clases Básicas del .NET Framework

TabStop Obtiene o establece un valor que indica si el usuario puede dar el foco a este control mediante la tecla TAB.

Tag Obtiene o establece el objeto que contiene datos sobre el control.

TextObtiene o establece el texto asociado al control.

Top Obtiene o establece la coordenada y del borde superior del control, en píxeles.

TopLevelObtiene o establece un valor que indica si el formulario debe mostrarse como ventana de nivel superior.

TopLevelControl Obtiene el control principal que no es secundario de ningún otro control de formularios Windows Forms.Normalmente, se trata del Form más externo en el que está contenido el control.

TopMostObtiene o establece un valor que indica si el formulario debe mostrarse como formulario de nivel superiorde la aplicación.

TransparencyKeyObtiene o establece el color que representará las áreas transparentes del formulario.

Visible Obtiene o establece un valor que indica si se muestra el control.

Width Obtiene o establece el ancho del control.

WindowStateObtiene o establece el estado de la ventana del formulario.

CLASES BÁSICAS DEL .NET FRAMEWORK

19

Page 51: Módulo_5_Clases Básicas del .NET Framework

MÉTODOS PÚBLICOSTareas propias que pueden hacer los formularios y que normalmente son invocadas desde código VB.

ActivateActiva el formulario y le otorga el foco.

AddOwnedFormAgrega un formulario con propietario al formulario.

BeginInvoke Sobrecargado. Ejecuta un delegado de forma asincrónica en el subproceso donde se creó el identificadorsubyacente del control.

BringToFront Coloca el control al principio del orden Z.

CloseCierra el formulario.

Contains Obtiene un valor que indica si el control especificado es un control secundario del control.

CreateControl Obliga a que se cree el control, incluidos el identificador y los controles secundarios.

CreateGraphics Crea el objeto Graphics para el control.

CreateObjRef Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado paracomunicarse con un objeto remoto.

Dispose Sobrecargado. Libera los recursos utilizados por Component.

DoDragDrop Inicia una operación de arrastrar y colocar.

CLASES BÁSICAS DEL .NET FRAMEWORK

20

Page 52: Módulo_5_Clases Básicas del .NET Framework

EndInvoke Recupera el valor devuelto por la operación asíncrona representada por el objeto IAsyncResult que se pasa.

Equals Sobrecargado. Determina si dos instancias de Object son iguales.

FindForm Recupera el formulario en el que se encuentra el control.

Focus Establece el foco de entrada en el control.

GetAutoScaleSizeObtiene el tamaño cuando el tamaño del formulario se ajusta automáticamente basándose en una fuenteconcreta.

GetChildAtPoint Recupera el control secundario ubicado en las coordenadas especificadas.

GetContainerControl Devuelve el siguiente ContainerControl (en sentido ascendente) de la cadena de controles principales delcontrol.

GetHashCode Sirve como función hash para un tipo concreto, apropiado para su utilización en algoritmos de hash yestructuras de datos como las tablas hash.

GetLifetimeService Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

GetNextControl Recupera el siguiente control, hacia delante o hacia atrás, en el orden de tabulación de controlessecundarios.

GetType Obtiene el objeto Type de la instancia actual.

Hide Oculta el control al usuario.

CLASES BÁSICAS DEL .NET FRAMEWORK

21

Page 53: Módulo_5_Clases Básicas del .NET Framework

InitializeLifetimeService Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.Invalidate

Sobrecargado. Invalida una región específica del control y hace que se envíe un mensaje de dibujo al control.Invoke Sobrecargado. Ejecuta un delegado en el subproceso que posee el identificador de ventana subyacente delcontrol.

LayoutMdiOrganiza los formularios MDI (interfaz de múltiples documentos) secundarios del formulario MDI principal.

PerformLayout Sobrecargado. Obliga al control a aplicar la lógica de diseño a los controles secundarios.

PointToClient Calcula la ubicación del punto especificado de la pantalla, en coordenadas de cliente.

PointToScreen Calcula la ubicación del punto especificado de cliente en coordenadas de pantalla.

PreProcessMessage Preprocesa los mensajes de entrada en el bucle de mensajes antes de enviarlos.

RectangleToClient Calcula el tamaño y la ubicación del rectángulo de pantalla especificado, en coordenadas de cliente.

RectangleToScreen Calcula el tamaño y la ubicación del rectángulo de cliente especificado, en coordenadas de pantalla.

Refresh Obliga al control a invalidar su área cliente y, acto seguido, obliga a que vuelva a dibujarse el control y suscontroles secundarios.

RemoveOwnedFormQuita un formulario con propietario de este formulario

CLASES BÁSICAS DEL .NET FRAMEWORK

22

Page 54: Módulo_5_Clases Básicas del .NET Framework

ResetBackColor Restablece el valor predeterminado de la propiedad BackColor.

ResetBindings Restablece el valor predeterminado de la propiedad DataBindings.

ResetCursor Restablece el valor predeterminado de la propiedad Cursor.

ResetFont Restablece el valor predeterminado de la propiedad Font.

ResetForeColor Restablece el valor predeterminado de la propiedad ForeColor.

ResetImeMode Restablece el valor predeterminado de la propiedad ImeMode.

ResetRightToLeft Restablece el valor predeterminado de la propiedad RightToLeft.

ResetText Restablece el valor predeterminado de la propiedad Text.

ResumeLayout Sobrecargado. Reanuda la lógica de diseño habitual.

Scale Sobrecargado. Ajusta la escala del control y de todos los controles secundarios.

Select Sobrecargado. Activa un control.

SelectNextControl Activa el siguiente control.

SendToBack Envía el control al final del orden Z.

CLASES BÁSICAS DEL .NET FRAMEWORK

23

Page 55: Módulo_5_Clases Básicas del .NET Framework

SetAutoScrollMargin Establece el tamaño de los márgenes de desplazamiento automático.

SetBounds Sobrecargado. Establece los límites del control.

SetDesktopBoundsEstablece los límites del formulario en las coordenadas del escritorio.

SetDesktopLocationEstablece la posición del formulario en coordenadas del escritorio.

Show Muestra el control al usuario.

ShowDialogSobrecargado. Muestra el formulario como un cuadro de diálogo modal.

SuspendLayout Suspende temporalmente la lógica de diseño del control.

ToStringReemplazado. Vea Object.ToString.

Update Hace que el control vuelva a dibujar las regiones invalidadas con su área cliente.

Validate Valida el último control no validado y sus predecesores, pero sin incluir el control actual.

EVENTOS PÚBLICOS

A estos eventos se puede asociar cualquier código de VB, todo este se ejecutara como respuesta adeterminadas acciones del usuario o bien provocadas por el sistema.

ActivatedSe produce cuando el formulario se activa por código de programa o por parte del usuario.

CLASES BÁSICAS DEL .NET FRAMEWORK

24

Page 56: Módulo_5_Clases Básicas del .NET Framework

BackColorChanged Se produce cuando el valor de la propiedad BackColor cambia.

BackgroundImageChanged Se produce cuando el valor de la propiedad BackgroundImage cambia.

BindingContextChanged Se produce cuando el valor de la propiedad BindingContext cambia.

CausesValidationChanged Se produce cuando el valor de la propiedad CausesValidation cambia.

ChangeUICues Se produce cuando cambian las guías de la interfaz de usuario para el foco o el teclado

.Click Se produce cuando se hace clic en el control.

ClosedTiene lugar cuando el formulario está cerrado.

ClosingTiene lugar cuando se cierra el formulario.

ContextMenuChanged Se produce cuando el valor de la propiedad ContextMenu cambia.

ControlAdded Se produce cuando se agrega un nuevo control a Control.ControlCollection.

ControlRemoved Se produce cuando se quita un control de Control.ControlCollection.

CursorChanged Se produce cuando el valor de la propiedad Cursor cambia.

DeactivateSe produce cuando el formulario pierde el foco y no es el formulario activo.

CLASES BÁSICAS DEL .NET FRAMEWORK

25

Page 57: Módulo_5_Clases Básicas del .NET Framework

Disposed Agrega un controlador de eventos para escuchar al evento Disposed en el componente.

DockChanged Se produce cuando el valor de la propiedad Dock cambia.

DoubleClick Se produce cuando se hace doble clic en el control.

DragDrop Se produce cuando termina una operación de arrastrar y colocar.

DragEnterSe produce cuando se arrastra un objeto dentro de los límites del control.

DragLeave Se produce cuando se arrastra un objeto fuera de los límites del control.

DragOver Se produce cuando se arrastra un objeto sobre los límites del control.

EnabledChanged Se produce cuando cambia el valor de la propiedad Enabled

.Enter Se produce cuando se entra en el control.

FontChanged Se produce cuando cambia el valor de la propiedad Font.

ForeColorChanged Se produce cuando cambia el valor de la propiedad ForeColor.

GiveFeedback Se produce durante una operación de arrastre.

GotFocus Se produce cuando el control recibe el foco.

CLASES BÁSICAS DEL .NET FRAMEWORK

26

Page 58: Módulo_5_Clases Básicas del .NET Framework

HandleCreated Se produce cuando se crea un identificador para el control.

HandleDestroyed Se produce cuando el identificador del control está en proceso de eliminación.

HelpRequested Se produce cuando el usuario solicita ayuda para un control.

ImeModeChanged Se produce cuando cambia la propiedad ImeMode.

InputLanguageChangedSe produce después de cambiarse el idioma de entrada del formulario.

InputLanguageChangingSe produce cuando el usuario intenta cambiar el idioma de entrada del formulario.

Invalidated Se produce cuando es necesario volver a dibujar un control.

KeyDown Se produce cuando se presiona una tecla mientras el control tiene el foco.

KeyPress Se produce cuando se presiona una tecla mientras el control tiene el foco.

KeyUp Se produce cuando se suelta una tecla mientras el control tiene el foco.

Layout Se produce cuando un control debe volver a colocar sus controles secundarios.

Leave Se produce cuando el foco de entrada deja el control.

LoadSe produce antes de que se muestre un formulario por primera vez.

CLASES BÁSICAS DEL .NET FRAMEWORK

27

Page 59: Módulo_5_Clases Básicas del .NET Framework

LocationChanged Se produce cuando cambia el valor de la propiedad Location.

LostFocus Se produce cuando el control pierde el foco.

MaximizedBoundsChangedSe produce cuando cambia el valor de la propiedad MaximizedBounds.

MaximumSizeChangedSe produce cuando cambia el valor de la propiedad MaximumSize.

MdiChildActivateSe produce cuando un formulario MDI (interfaz de múltiples documentos) secundario se activa o se cierradentro de una aplicación MDI.

MenuCompleteSe produce cuando el menú de un formulario pierde el foco.

MenuStartSe produce cuando el menú de un formulario recibe el foco.

MinimumSizeChangedSe produce cuando cambia el valor de la propiedad MinimumSize.

MouseDown Se produce cuando el puntero del mouse está sobre el control y se presiona un botón del mouse.

MouseEnter Se produce cuando el puntero del mouse entra en el control.

MouseHover Se produce cuando el puntero del mouse se sitúa encima del control.

MouseLeave Se produce cuando el puntero del mouse deja el control.

MouseMove Se produce cuando el puntero del mouse se mueve sobre el control.

CLASES BÁSICAS DEL .NET FRAMEWORK

28

Page 60: Módulo_5_Clases Básicas del .NET Framework

MouseUp Se produce cuando el puntero del mouse está encima del control y se suelta un botón del mouse.

MouseWheel Se produce cuando la rueda del mouse se mueve mientras el control tiene el foco.

Move Se produce cuando se mueve el control.

Paint Se produce cuando vuelve a dibujarse el control.

ParentChanged Se produce cuando cambia el valor de la propiedad Parent.

QueryAccessibilityHelp Se produce cuando AccessibleObject proporciona ayuda para aplicaciones de accesibilidad.

QueryContinueDrag Se produce durante una operación de arrastrar y colocar y permite al origen de arrastre determinar si laoperación de arrastrar y colocar tiene que cancelarse.

Resize Se produce cuando se cambia el tamaño del control.

RightToLeftChanged Se produce cuando cambia el valor de la propiedad RightToLeft.

SizeChanged Se produce cuando cambia el valor de la propiedad Size.

StyleChanged Se produce cuando cambia el estilo del control.

SystemColorsChanged Se produce cuando se modifican los colores del sistema.

TabIndexChanged Se produce cuando cambia el valor de la propiedad TabIndex.

CLASES BÁSICAS DEL .NET FRAMEWORK

29

Page 61: Módulo_5_Clases Básicas del .NET Framework

TabStopChanged Se produce cuando cambia el valor de la propiedad TabStop

.TextChanged Se produce cuando cambia el valor de la propiedad Text.

Validated Se produce cuando finaliza la validación del control.

Validating Se produce cuando el control se está validando.

VisibleChanged Se produce cuando cambia el valor de la propiedad Visible.

PROPIEDADES PROTEGIDASSolamente son accesibles estas propiedades cuando nosotros hayamos creado una clase que herede de la claseForm, todo esto se verá mas profundamente posteriormente en este libo.

CreateParamsReemplazado. Vea Control.CreateParams.

DefaultImeModeReemplazado. Obtiene el modo de Editor de métodos de entrada (IME) predeterminado que admite el control.

DefaultSizeReemplazado. Vea Control.DefaultSize.

DesignMode Obtiene un valor que indica si Component está actualmente en modo de diseño.

Events Obtiene la lista de controladores de eventos asociados a Component.

FontHeight Obtiene o establece el alto de la fuente del control.

HScroll Obtiene o establece un valor que indica si está visible la barra de desplazamiento horizontal

CLASES BÁSICAS DEL .NET FRAMEWORK

30

Page 62: Módulo_5_Clases Básicas del .NET Framework

.MaximizedBoundsObtiene y establece el tamaño del formulario cuando está maximizado

.ResizeRedraw Obtiene o establece un valor que indica si el control vuelve a dibujarse automáticamente cuando cambia detamaño.

ShowFocusCues Obtiene un valor que indica si el control debe mostrar rectángulos de foco

.ShowKeyboardCues Obtiene un valor que indica si el control debe mostrar métodos abreviados de teclado

.VScroll Obtiene o establece un valor que indica si está visible la barra de desplazamiento vertical.

MÉTODOS PROTEGIDOS

Todos estos métodos solo se pueden ejecutar cuando hayamos creado una clase propia que herede de laclase form, dado que todavía no he explicado nada de programación orientada a objetos, el listado se da convistas a una posterior profundización.

AccessibilityNotifyClients Notifica a las aplicaciones cliente de accesibilidad los objetos AccessibleEvents especificados del controlsecundario especificado.

AdjustFormScrollbarsReemplazado. Vea ScrollableControl.AdjustFormScrollbars

.CreateAccessibilityInstance Crea un nuevo objeto de accesibilidad para el control.

CreateControlsInstanceReemplazado. Vea Control.CreateControlsInstance.

CreateHandleReemplazado. Vea Control.CreateHandle.

CLASES BÁSICAS DEL .NET FRAMEWORK

31

Page 63: Módulo_5_Clases Básicas del .NET Framework

DefWndProcReemplazado. Vea Control.DefWndProc.

DestroyHandle Destruye el identificador asociado a este control.

DisposeSobrecargado. Reemplazado. Vea Control.Dispose.

Finalize Reemplazado. Permite que un objeto Object intente liberar recursos y realizar otras operaciones de limpiezaantes de que el objeto Object sea reclamado por el recolector de elementos no utilizados.

En C# y C++, los finalizadores se expresan mediante la sintaxis del destructor.

GetService Devuelve un objeto que representa el servicio suministrado por Component o por Container.

GetStyle Recupera el valor del bit de estilo de control especificado para el control.

GetTopLevel Determina si el control es de nivel superior.

InitLayout Se llama a este método cuando el control se ha agregado a otro contenedor.

InvokeGotFocus Provoca el evento GotFocus para el control especificado.

InvokeLostFocus Provoca el evento LostFocus para el control especificado.

InvokeOnClick Provoca el evento Click para el control especificado.

InvokePaint Provoca el evento Paint para el control especificado.

CLASES BÁSICAS DEL .NET FRAMEWORK

32

Page 64: Módulo_5_Clases Básicas del .NET Framework

InvokePaintBackground Provoca el evento PaintBackground para el control especificado

.IsInputChar Determina si un carácter es un carácter de entrada que el control reconoce

.IsInputKey Determina si la tecla especificada es una tecla de entrada normal o una tecla especial que requierepreprocesamiento.

MemberwiseClone Crea una copia superficial del objeto Object actual.

OnActivatedProvoca el evento Activated.

OnBackColorChanged Provoca el evento BackColorChanged.

OnBackgroundImageChanged Provoca el evento BackgroundImageChanged.

OnBindingContextChanged Provoca el evento BindingContextChanged.

OnCausesValidationChanged Provoca el evento CausesValidationChanged.

OnChangeUICues Provoca el evento ChangeUICues

.OnClick Provoca el evento Click

OnClosedProvoca el evento Closed.

OnClosingProvoca el evento Closing.

CLASES BÁSICAS DEL .NET FRAMEWORK

33

Page 65: Módulo_5_Clases Básicas del .NET Framework

OnContextMenuChanged Provoca el evento ContextMenuChanged.

OnControlAdded Provoca el evento ControlAdded.

OnControlRemoved Provoca el evento ControlRemoved.

OnCreateControlReemplazado. Vea Control.OnCreateControl.

OnCursorChanged Provoca el evento CursorChanged.

OnDeactivateProvoca el evento Deactivate.

OnDockChanged Provoca el evento DockChanged.

OnDoubleClick Provoca el evento DoubleClick.

OnDragDrop Provoca el evento DragDrop.

OnDragEnter Provoca el evento DragEnter.

OnDragLeave Provoca el evento DragLeave.

OnDragOver Provoca el evento DragOver.

OnEnabledChanged Provoca el evento EnabledChanged.

CLASES BÁSICAS DEL .NET FRAMEWORK

34

Page 66: Módulo_5_Clases Básicas del .NET Framework

OnEnter Provoca el evento Enter.

OnFontChangedReemplazado. Vea Control.OnFontChanged.

OnForeColorChanged Provoca el evento ForeColorChanged.

OnGiveFeedback Provoca el evento GiveFeedback.

OnGotFocus Provoca el evento GotFocus.

OnHandleCreatedReemplazado. Vea Control.OnHandleCreated.

OnHandleDestroyedReemplazado. Vea Control.OnHandleDestroyed.

OnHelpRequested Provoca el evento HelpRequested.

OnImeModeChanged Provoca el evento ImeModeChanged.

OnInputLanguageChangedProvoca el evento InputLanguageChanged.

OnInputLanguageChangingProvoca el evento InputLanguageChanging.

OnInvalidated Provoca el evento Invalidated.

OnKeyDown Provoca el evento KeyDown.

CLASES BÁSICAS DEL .NET FRAMEWORK

35

Page 67: Módulo_5_Clases Básicas del .NET Framework

OnKeyPress Provoca el evento KeyPress.

OnKeyUp Provoca el evento KeyUp.

OnLayout Provoca el evento Layout.

OnLeave Provoca el evento Leave.

OnLoadProvoca el evento Load.

OnLocationChanged Provoca el evento LocationChanged.

OnLostFocus Provoca el evento LostFocus.

OnMaximizedBoundsChangedProvoca el evento MaximizedBoundsChanged.

OnMaximumSizeChangedProvoca el evento MaximumSizeChanged.

OnMdiChildActivateProvoca el evento MdiChildActivate.

OnMenuCompleteProvoca el evento MenuComplete.

OnMenuStartProvoca el evento MenuStart.

OnMinimumSizeChangedProvoca el evento MinimumSizeChanged.

CLASES BÁSICAS DEL .NET FRAMEWORK

36

Page 68: Módulo_5_Clases Básicas del .NET Framework

OnMouseDown Provoca el evento MouseDown.

OnMouseEnter Provoca el evento MouseEnter.

OnMouseHover Provoca el evento MouseHover.

OnMouseLeave Provoca el evento MouseLeave.

OnMouseMove Provoca el evento MouseMove.

OnMouseUp Provoca el evento MouseUp.

OnMouseWheel Provoca el evento MouseWheel.

OnMove Provoca el evento Move.

OnNotifyMessage Notifica al control los mensajes de Windows.

OnPaintReemplazado. Vea Control.OnPaint.

OnPaintBackground Pinta el fondo del control.

OnParentBackColorChanged Provoca el evento BackColorChanged cuando cambia el valor de la propiedad BackColor del contenedor delcontrol.

CLASES BÁSICAS DEL .NET FRAMEWORK

37

Page 69: Módulo_5_Clases Básicas del .NET Framework

OnParentBackgroundImageChanged Provoca el evento BackgroundImageChanged cuando cambia el valor de la propiedad BackgroundImage delcontenedor del control.

OnParentBindingContextChanged Provoca el evento BindingContextChanged cuando cambia el valor de la propiedad BindingContext delcontenedor del control.

OnParentChanged Provoca el evento ParentChanged.

OnParentEnabledChanged Provoca el evento EnabledChanged cuando cambia el valor de la propiedad Enabled del contenedor delcontrol.

OnParentFontChanged Provoca el evento FontChanged cuando cambia el valor de la propiedad Font del contenedor del control.

OnParentForeColorChanged Provoca el evento ForeColorChanged cuando cambia el valor de la propiedad ForeColor del contenedor delcontrol.

OnParentRightToLeftChanged Provoca el evento RightToLeftChanged cuando cambia el valor de la propiedad RightToLeft del contenedordel control.

OnParentVisibleChanged Provoca el evento VisibleChanged cuando cambia el valor de la propiedad Visible del contenedor del control.

OnQueryContinueDrag Provoca el evento QueryContinueDrag.

OnResizeReemplazado. Vea Control.OnResize.

OnRightToLeftChanged Provoca el evento RightToLeftChanged.

CLASES BÁSICAS DEL .NET FRAMEWORK

38

Page 70: Módulo_5_Clases Básicas del .NET Framework

OnSizeChangedProvoca el evento SizeChanged.

OnStyleChangedReemplazado. Vea Control.OnStyleChanged.

OnSystemColorsChanged Provoca el evento SystemColorsChanged.

OnTabIndexChanged Provoca el evento TabIndexChanged.

OnTabStopChanged Provoca el evento TabStopChanged.

OnTextChangedReemplazado. Vea Control.OnTextChanged.

OnValidated Provoca el evento Validated.

OnValidating Provoca el evento Validating.

OnVisibleChangedReemplazado. Vea Control.OnVisibleChanged.

ProcessCmdKeyReemplazado. Vea Control.ProcessCmdKey.

ProcessDialogChar Procesa un carácter de cuadro de diálogo.

ProcessDialogKeyReemplazado. Vea Control.ProcessDialogKey.

ProcessKeyEventArgs Procesa un mensaje de tecla y genera los eventos de control correspondientes.

CLASES BÁSICAS DEL .NET FRAMEWORK

39

Page 71: Módulo_5_Clases Básicas del .NET Framework

ProcessKeyMessage Procesa un mensaje de teclado.

ProcessKeyPreviewReemplazado. Vea Control.ProcessKeyPreview.

ProcessMnemonic Procesa un carácter de tecla de acceso.

ProcessTabKeyReemplazado. Vea ContainerControl.ProcessTabKey.

RecreateHandle)Obliga a que se vuelva a crear el identificador del control.

RtlTranslateAlignment Sobrecargado. Convierte la alineación actual en la alineación correspondiente para que admita texto dederecha a izquierda.

RtlTranslateContent Convierte ContentAlignment que se especifica en ContentAlignment correspondiente para que admita textode derecha a izquierda.

RtlTranslateHorizontal Convierte HorizontalAlignment que se especifica en HorizontalAlignment correspondiente para que admitatexto de derecha a izquierda.

RtlTranslateLeftRight Convierte LeftRightAlignment que se especifica en LeftRightAlignment correspondiente para que admitatexto de derecha a izquierda.

ScaleCoreReemplazado. Vea Control.ScaleCore.

SelectSobrecargado. Reemplazado. Vea Control.Select.

SetBoundsCoreReemplazado. Vea Control.SetBoundsCore.

CLASES BÁSICAS DEL .NET FRAMEWORK

40

Page 72: Módulo_5_Clases Básicas del .NET Framework

SetClientSizeCoreReemplazado. Vea Control.SetClientSizeCore.

SetStyle Establece el bit de estilo especificado en el valor especificado.

SetTopLevel Establece el control como el control de nivel superior.

SetVisibleCoreReemplazado. Vea Control.SetVisibleCore.

UpdateBounds Sobrecargado. Actualiza los límites del control.

UpdateStyles Obliga a que los estilos asignados vuelvan a aplicarse al control.

UpdateZOrder Actualiza el control en el orden Z de su control principal.

WndProcReemplazado. Vea Control.WndProc.

Propiedades de los formularios

Rotulo de la barra de tituloMediante la propiedad TEXT de los formulariosTamaño de los formulariosMediante la propiedad SIZE y sus valores WIDHT y HEIGHT, los valores de estas propiedades vienen expresadosen pixels.

Si deseamos hacer un cambio dinámico del tamaño de los formularios debemos de teclear el siguiente código

Me.Size = New System.Drawing.Size(300, 300)

La propiedad size de los controles recibe un objeto de tipo drawing.size, de ahí que se le haya asignado a lapropiedad size del formulario activo un nuevo objeto de este tipo.

CLASES BÁSICAS DEL .NET FRAMEWORK

41

Page 73: Módulo_5_Clases Básicas del .NET Framework

Me es la palabra clave que hace referencia al formulario activo, el formulario donde en este momento se estátrabajando.

Posición en pantalla del formulario

La propiedad LOCATION con sus valores X e Y disponible en la ventana de propiedades para el formularioinicialmente no hace nada, es decir podemos poner lo que pongamos que el formulario aparece en unaposición aleatoria en relación a la pantalla de nuestros ordenadores, si deseamos posicionar el formulariocuando se presente, o en cualquier otra ocasión, en una posición concreta, debemos recurrir al siguientecódigo

Me.Location = New System.Drawing.Point(150, 300)

De nuevo utilizamos la palabra Me para referenciar el formulario activo, y a la propiedad LOCATION delmismo le asignamos un nuevo objeto de tipo POINT con unas coordenadas X e Y determinadas.

Estado de la ventana de los Formularios

El objetivo es especificar si deseamos que la ventana se muestre Maximizada, minimizada o en tamañonormal, tal como lo haya establecido el desarrollador en modo diseño. Esto se hace mediante WINDOWSTATE.También la podemos especificar en cualquier parte de nuestro código:

Me.WindowState = FormWindowState.Minimized

Posición inicial de los formularios

Como se muestra al principio los formularios con respecto a la pantalla, es decir si están o no centrados enla misma. Lo hacemos mediante STARTPOSITION. La propiedad solo es efectiva si es establecida mediante laventana de propiedades durante el diseño de formularios. No hará efecto si la establecemos por código.

Estilo del borde de los formularios

Permite no solo establecer el aspecto de los bordes de los formularios, sino también la funcionalidad de losmismos, la propiedad es FORMBORDERSTYLE, que puede tener alguno de los siguientes valores.

Fixed3DBorde tridimensional fijo.FixedDialogBorde de estilo de cuadro de diálogo fijo y de ancho grueso.

CLASES BÁSICAS DEL .NET FRAMEWORK

42

Page 74: Módulo_5_Clases Básicas del .NET Framework

FixedSingleBorde fijo de una sola línea.FixedToolWindowBorde de ventana de herramienta de tamaño fijo.NoneSin borde.SizableBorde de tamaño variable.- opción por defectoSizableToolWindowBorde de ventana de herramienta de tamaño variable.La propiedad cambiara en cualquier momento mediante código. Visualización de botones de control de FormularioPosibilita que se vean o no alguno o todos los controles típicos de las ventanas Windows, como el de cierre,el de maximizar / restaurar o el de minimizar.

Las propiedades que lo consiguen son:

CONTROLBOX – solo puede ser verdadero o falso, si es esto último se quitan los tres controles típicos de lasventanas Windows.MAXIMIZEDBOX– orientado a poner o quitar el botón de maximizadoMINIMIZEDBOX– orientado al botón de minimizado.Si controlbox está a trae-verdadero con las otras dos propiedades podemos quitar los respectivos botones,pero si esta a false-falso no podemos poner los controles individualmente.

Color del fondo de los formulariosSe consigue mediante la propiedad BACKCOLOR.Hay una serie de colores predefinidos del sistema así como de web que se pueden elegir, también es posiblepersonalizar un color.Si se desea cambiar el color del fondo de un formulario durante la ejecución de un programa es necesarioteclear el siguiente código

Private Sub fondo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles fondo.ClickMe.BackColor = System.Drawing.Color.Salmon

End Sub

Private Sub FONDO2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesFONDO2.ClickMe.BackColor = New System.Drawing.Color().FromArgb(123, 245, 34)End Sub

CLASES BÁSICAS DEL .NET FRAMEWORK

43

Page 75: Módulo_5_Clases Básicas del .NET Framework

En el primer procedimiento asignamos uno de los colores predeterminados existentes en VB a la propiedadBackcolor del formulario activo, en concreto el color salmón.

En el segundo formulario vamos a asignar a la misma propiedad un color, que es la combinación de los coloresbásicos ROJO, VERDE y AZUL, en niveles que están comprendidos entre el 0 y el 255, si se pusiera un valorsuperior al 255 VisualBasic cogería el 255. Si estos valores se especifican con decimales VB los desprecia.

El método FROMARGB de COLOR admite un primer argumento que es el conocido CANAL ALFA, orientado aestablecer el nivel de transparencia del color que se define, pero los formularios no admiten este argumento.Imagen de fondo en los formularios

Es posible poner una imagen que figure como fondo de los formularios, la propiedad que lo consigue esBACKGROUNDIMAGE.

La propiedad permite buscar el fichero gráfico que deseemos, hay que tener en cuenta que si este ficheroes de tipo GIF animado, la animación no se reproduce como fondo del formulario.

En cualquier momento podemos borrar la imagen de fondo de los formularios si seleccionamos el fichero deimagen que se encuentra especificado dentro de la propiedad y lo borramos. Lógicamente es posible cambiarla imagen de fondo por otra tanto en modo diseño como en modo ejecución, para ello es necesario poner elsiguiente código

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickMe.BackgroundImage = System.Drawing.Image.FromFile(“c:\bobada.bmp”)End Sub

obsérvese que se le asigna a la propiedad Backgroundimage un objeto de tipo drawing image, especificandola ruta donde se encuentra el archivo y el nombre del mismo.

Formularios con niveles de transparencia

Es posible definir que toda la superficie de un formulario tenga un porcentaje de transparencia comprendidoentre un rango de valores del 0 al 100%, el 0 consigue que el formulario sea absolutamente transparente, esdecir, no se ve, mientras que el 100% que es la opción por defecto le hace totalmente opaco.

Hay que tener en cuenta que incluso los controles que estén en el formulario van a tener el nivel detransparencia elegido.

CLASES BÁSICAS DEL .NET FRAMEWORK

44

Page 76: Módulo_5_Clases Básicas del .NET Framework

La propiedad que lo consigue es OPACITY, es posible determinarla en tiempo de diseño y también durante laejecución de los programas mediante el siguiente código

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button2.Click

Me.Opacity = 0.55End Sub

Hay que valorar que en el código el nivel de opacidad se determina mediante números con decimales, ya quela opacidad va del 0 al 1.

Formularios con zonas transparentes

Se pretende que los formularios tengan zonas totalmente transparentes a través de las cuales es posibleinteractuar con otras ventanas.

La propiedad que consigue este efecto es TRANSPARENCYKEY,Se ha de especificar uno de los colores disponibles, tanto del sistema, como de web como personales. Estecolor determina las zonas transparentes del formulario, todo lo que no sea este color será opaco.

Generalmente se suele poner un color de fondo al formulario determinado con la propiedad backcolor,después se van insertando controles en el mismo, cambiándolos a otro color si es necesario, de forma quetodo aquello que desea ser opaco hay que procurar que no tenga el color de la propiedad transparencykey.Es posible utilizar esta propiedad tanto en modo diseño como en modo ejecución para lo que se ha de teclearel siguiente código

Mostrar o no formularios en barra de tareas Windows

Cualquier aplicación que se este ejecutando en un momento dado en Windows, posee un botón con el iconoy el nombre de la aplicación visible en la barra de tareas de Windows, pues bien es posible que no aparezcacon la propiedad SHOWINTASKBAR, que puede ser verdadero o falso.

No solo no es que se vea en la barra de tareas si no tampoco en el administrador de tareas. Es posible activaro no esta propiedad también en modo ejecución.

CLASES BÁSICAS DEL .NET FRAMEWORK

45

Page 77: Módulo_5_Clases Básicas del .NET Framework

Formularios siempre en primer plano

Posibilita que los formularios estén o no estén activos siempre se encuentren en una ventana por encima delas demás, como puede suceder cuando construyamos barras de herramientas fijas o flotantes, la propiedades TOPMOST que puede ser verdadera o falsa.Esta propiedad también puede ser establecida en modo ejecución.

Me.TransparencyKey = System.Drawing.Color.Red

Se ha establecido que todo el fondo de color rojo que se vea en el formulario sea transparente.

Tamaño ajustable máximo y mínimo de formularios

Permite que el desarrollador o el usuario del formulario no pueda cambiar el tamaño del mismo a unasunidades superiores o inferiores a las establecidas.

Las propiedades que permiten hacer estas tareas son MAXIMUNSIZE y MINIMUNSIZE que permite estableceruna anchura y altura máximas y mínimas en pixels para el formulario.

Para desactivar estas propiedades simplemente se ponen a cero tanto la anchura como la altura máxima.Es posible cambiar estas propiedades en modo ejecución.

Estilo del SizeGrip de los formularios

Permite que se muestre en la esquina inferior derecha de los formularios una especie de muesca que controlael tamaño de los mismos, muy típica de todas las aplicaciones Windows.

La propiedad es SIZEGRIPSTYLE, que permite tres opciones: que se oculte, que se muestre o que se activede manera automática.

Establecer botones Aceptar y Cancelar en el formulario.

Es posible que cualquier botón que se encuentre en el formulario pueda activarse automáticamente cuandose pulsa la tecla RETURN o bien ESCAPE, es decir que todo el código asociado a estos botones se ejecutesimplemente pulsando return o bien escape.

Para esto se utilizan las propiedades ACCEPTBUTTON y CANCELBUTTON, ambas permiten seleccionar cual esel botón de todos los que tiene el formulario al que deseamos asignar esta función.

CLASES BÁSICAS DEL .NET FRAMEWORK

46

Page 78: Módulo_5_Clases Básicas del .NET Framework

Activar la auto escala del formularioLa propiedad AUTOSCALE permite activar o no el hecho de que cuando se cambien las fuentes del formularioautomáticamente cambia el tamaño del formulario y de sus controles para que se ajusten.

Activar el autoscroll del formularioLa propiedad AUTOSCROLL permite el que aparezcan o no las barras de desplazamiento horizontal o verticaldel formulario en caso de que no se pueda ver total o parcialmente uno de los controles del mismo.Fuentes por defecto del formularioLa propiedad FONT permite seleccionar la fuente, el estilo, el tamaño y algunos efectos especiales para lasletras que se vayan a escribir en la superficie del formulario.

Cuando se hace un cambio de esta propiedad las fuentes de todos los controles van a tener estascaracterísticas al no ser que se hayan cambiado expresamente.

Color de las fuentes por defecto de los formulariosLa propiedad FORECOLOR esta destinada a hacer este tipo de trabajo, muestra las mismas opciones queaquellas propiedades que permiten cambiar colores.

Cuando se cambia el valor de esta propiedad todos los controles, salvo aquellos destinados a que el usuarioteclee valores, cambian las letras de color, al no ser que se hayan modificado específicamente.

Propiedades para diseño de los formularios

Están orientadas a facilitar el trabajo de diseño de los formularios de nuestras aplicaciones.

DRAWGRID – activa o no la cuadricula del formulario para ayudarnos a posicionar objetos en el mismo.

GRIDSIZE– establece el tamaño de la cuadricula en pixels, en realidad determina cuantos píxeles deseparación haya entre la cuadricula.

LOCKED– determina si se puede mover o cambiar el tamaño del formulario, es decir permite o no bloquearun formulario.

SNAPTOGRID – establece la fijación de los controles a la rejilla, de manera que no hay manera de colocar uncontrol entre dos puntos de la cuadricula, solamente se pueden colocar los controles totalmente alineadosa la misma.

CLASES BÁSICAS DEL .NET FRAMEWORK

47

Page 79: Módulo_5_Clases Básicas del .NET Framework

Eventos de Formularios

Evento LoadNo lo dispara el usuario sino el sistema, se ejecuta el primero de todos los procedimientos de evento, antesde que aparezca el formulario.

Se puede poner el código que nosotros deseemos, normalmente este suele ser el que permite la inicializaciónde algunas variables o objetos

Evento ClosedEs el opuesto del anterior se ejecuta inmediatamente de que se haya cerrado el formulario, suele servirpara quitar de la memoria algunos recursos utilizados por el programa.

Evento ClosingSe produce inmediatamente antes de que se cierre el formulario, es decir se dispara antes que el queacabamos de ver.

Se suele codificar para pedir confirmación al usuario si se desea salir, puesto que se le pasa un argumento eque es de tipo eventos de cancelación que permite cancelar o no el proceso de cierre antes de que acontezca.Vamos a ver un trozo de código típico

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing

If MessageBox.Show(“Esta seguro que desea salirse”, “ATENCION”, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) = DialogResult.OK Then

e.Cancel = FalseElse

e.Cancel = TrueEnd IfEnd Sub

En este código se le va a hacer al usuario una pregunta cuando se intente salir del programa mediante elbotón de cerrar de las ventanas o mediante cualquier código que permita finalizar la ejecución del programa,obsérvese que se muestra una caja de dialogo Standard con un mensaje, un titulo, unos botones y un icono,

CLASES BÁSICAS DEL .NET FRAMEWORK

48

Page 80: Módulo_5_Clases Básicas del .NET Framework

y se capta el botón que se ha pulsado por parte del usuario como contestación a este cuadro de dialogo, siel botón es el de OK no se cancela el proceso de cerrado, es decir se cierra la aplicación y se sale al sistemaoperativo. Si hubiese pinchado en el otro botón la condición hubiese sido false y se hubiese ejecutado el else,que lo que hace es cancelar el proceso de cierre, luego no se cierra la aplicación y el usuario sigue trabajandoen ella.

MoveSe produce cuando se mueve el formulario tanto pro el usuario o por el código.

ResizeSe produce cuando se cambia el tamaño del formulario, bien por parte del usuario o bien mediante código

Eventos que interceptan el ratón

Son una serie de eventos que se disparan como respuesta a acciones del ratón

ClickDoubleClickMouseDown

Se produce un poco antes de que se produzca el clic, es muy parecido a este salvo que se le pasa unargumento muy importante que es el e de tipo eventos del ratón, mediante este argumentos podemosinterceptar varias informaciones que emite el ratón, como puede ser el tipo de botón pulsado, la posiciónrelativa del puntero del ratón cuando se pulso el mismo, etc. Vamos a ver un trozo de código que demuestralo anterior.

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown

TextBox3.Text = e.Button.ToStringTextBox5.Text = e.XTextBox6.Text = e.Y

End Sub

Lo que se pone en la caja de texto 3 del formulario es el nombre del botón que se pulsa del ratón como puedeser left, middle o right.

CLASES BÁSICAS DEL .NET FRAMEWORK

49

Page 81: Módulo_5_Clases Básicas del .NET Framework

Las cajas 5 y 6 tienen las coordenadas x e y de donde se ha pulsado con el ratón.

MouseEnterMouseHover

Se dispara después de que el ratón permanezca unos segundos parado encima del formulario.

MouseLeaveSe produce cuando el ratón sale del formulario.

MouseMoveMouseUp

Este evento se produce cuando se suelta uno de los botones del ratón, como en mousemove se le pasa unargumento e, que pude detectar varias condiciones del ratón.

Eventos que interceptan el teclado

Son una serie de eventos especializados en la detección de la pulsación de cualquier tecla del teclado

KeyDownSe ejecuta en el instante de que se pulsa cualquier tecla.

Para que el formulario intercepte los eventos antes que los controles que puedan estar en él es necesarioestablecer la propiedad KEYPREVIEW del formulario a trae.

Al procedimiento de evento se le pasa un argumento a través del cual es posible valorar información relativaa la tecla pulsada.

KeyUpEs lo mismo que el evento anterior, la diferencia es que se ejecuta inmediatamente de que se suelta la teclapulsada.

Si deseamos valorar una combinación de teclas pulsadas, es necesario utilizar este procedimiento de evento,puesto que el keydown se dispara automáticamente nada mas pulsar la tecla, de manera que captaríasolamente la primera tecla pulsada pero no la segunda, vamos a ver un ejemplo

CLASES BÁSICAS DEL .NET FRAMEWORK

50

Page 82: Módulo_5_Clases Básicas del .NET Framework

Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp

If e.Alt ThenIf e.KeyCode = Keys.W Then

MessageBox.Show(“ha pulsado ALT+W”)End If

End IfIf e.Control Then

If e.KeyCode = Keys.W ThenMessageBox.Show(“ha pulsado CTRL+W”)

End IfEnd IfIf e.Shift Then

If e.KeyCode = Keys.W ThenMessageBox.Show(“ha pulsado MAYUSCYKAS+W”)

End IfEnd If

End Sub

En este código se intenta interceptar si el usuario a pulsado o bien CTRL + W, ALT + W o MAYUSCULAS + W.Como se ve la pulsación de las teclas especiales se valora directamente mediante propiedades del argumentoe que se le pasa al procedimiento de evento, después la pulsación de las teclas normales se consigue con lapropiedad keycode de dicho argumento.

KeyPressSe dispara cuando el usuario pulsa una tecla del teclado, es muy parecido al keydown, salvo que se le pasaun argumento e al que se le pasan los distintos códigos de tecla presionada, es el código ASCII de la misma,a diferencia del keycode de los eventos anteriores. Esto conlleva a que se puedan interceptar menor númerode teclas pulsadas.

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

TextBox12.Text = e.KeyCharIf e.KeyChar = “c” Then

MessageBox.Show(“ha pulsado la c minúscula”)End If

End Sub

CLASES BÁSICAS DEL .NET FRAMEWORK

51

Page 83: Módulo_5_Clases Básicas del .NET Framework

En el código anterior se observa la utilización de keychar en vez de keycode como hacíamos anteriormente,esto va a escribir el código ASCII correspondiente a la tecla pulsada en la segunda caja de texto delformulario.

Después se pregunta si la tecla pulsada es la c minúsculas, para mostrar un mensaje alusivo.

Las capacidades de keypress son menores que las de keydown

Métodos de los formularios

Son las funciones específicas que hacen los formularios durante su gestión

Todos estos métodos se utilizan poniendo primeramente el nombre del objeto formulario, después un puntoy finalmente el nombre del método.

ShowEste método provoca que se visualize un formulario.

Ventana.Show()

Este código mostrará el formulario llamado Ventana.

ShowDialogEs muy parecido al método anterior salvo que este consigue que el formulario se muestre como MODAL, estoquiere decir que el usuario esta obligado a interactuar con el formulario y cerrarlo, para poder trabajar conotras aplicaciones. No es posible activar ninguna ventana hasta que no se cierra la ventana actual.

Los formularios NO MODALES, que son los que se muestran con el método Show, ofrecen libertad al usuariopara poder trabajar con cualquier ventana que se muestre en el monitor aunque no haya cerrado la actual.

CloseCierra el formulario en el que se utiliza este método.

HideEste método oculta el formulario al que apunta, no se descarga de la memoria.

CLASES BÁSICAS DEL .NET FRAMEWORK

52

Page 84: Módulo_5_Clases Básicas del .NET Framework

ActivateEs un método que activa un formulario pero sin mostrarlo, incluso no se activa el evento activate delformulario.

SelectMétodo que activa un formulario pero sin mostrarlo, pero si que dispara el evento activate del formulario.

Trabajo con múltiples formularios

La mayoría de las aplicaciones profesionales que están en el mercado suelen trabajar con más de uno, es decirse muestra durante la ejecución de estos programas más de una ventana.

En VisualBasic Net los formularios son realmente clases o mejor dicho instancias de clases, estos conceptoslos veremos posteriormente en este libro, pero ahora diremos que para poder trabajar con más de unformulario debemos hacer lo siguiente:

Primeramente debemos de agregar un nuevo objeto formulario a nuestro proyecto

Estando en la ventana explorador de soluciones, en donde aparecen todos los elementos de cada proyectoo solución, seleccionamos la carpeta general del proyecto

Pulsamos el botón derecho del ratón

Nos aparece un menú contextual

Elegimos agregar

Ahora podemos elegir Windows Forms o agregar nuevo elemento para después elegir Windows Forms.

Podemos especificar el nombre para el nuevo formulario

Automáticamente aparecerá un nuevo formulario en la ventana general de soluciones

Para poder gestionar el segundo formulario lo primero que tenemos que hacer es declarar, en el primerformulario una variable para el objeto formulario2 ya introducido en nuestro proyecto

CLASES BÁSICAS DEL .NET FRAMEWORK

53

Page 85: Módulo_5_Clases Básicas del .NET Framework

Posteriormente ya podemos utilizar los métodos que están disponibles para los formularios para gestionarlolibremente.

Vamos a ver un trozo de código donde se puede apreciar lo anteriormente comentado.

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

Dim ventana As New Form2()ventana.Show()

End Sub

Vemos en este código que primeramente se crea una variable objeto para recibir un objeto del tipo Form2,es decir del segundo formulario, y después se le asigna el objeto, para finalmente mostrarlo mediante elmétodo Show.

Si hubiésemos declarado la variable como publica en el primer formulario, es decir antes de cualquierprocedimiento, la primera vez que abrimos el segundo formulario no hubiese habido problemas, pero en lassiguientes ocasiones si, puesto que si cerramos la ventana del formulario después de abierto, el VB quita elobjeto de la memoria, o mejor dicho marca este objeto para ser quitado de la memoria, de forma que sideseamos después mostrarlo mediante el método show, sencillamente ya no existe.

Cada vez que se pulsa el botón del primer formulario se crea una nueva instancia de la misma clase, veremosque si se pulsa varias veces el botón sin cerrar los formularios, se muestran diversos formularios clónicos,exactamente iguales.

Aplicaciones MDI

Este es un tipo especial de aplicaciones que se caracterizan porque tienen múltiples ventanas, pero entreellas hay un nivel de jerarquía, es decir, siempre existe una ventana principal o padre, y todas las demás sonventanas secundarias o hijas.

Las ventanas secundarias nunca se pueden desplazar más allá de los límites de la ventana padre.

Las ventanas hijas normalmente no tienen un menú propio, siendo la ventana padre la que lo tiene, y através del cual se gestionan todas las ventanas de la aplicación.

En un momento dado una ventana hija solo puede tener una ventana padre.

CLASES BÁSICAS DEL .NET FRAMEWORK

54

Page 86: Módulo_5_Clases Básicas del .NET Framework

En VB Net es posible que haya vayas ventanas padre cada una de ellas con varias ventanas hijas, puede haberincluso ventanas libres, en el sentido que no funcionan ni como padre ni como hijas.

La orientación de este tipo de aplicaciones es darle la posibilidad al usuario de crear varios documentosdentro de una aplicación, a cada uno de los cuales se le asigne una ventana propia, por ejemplo crearaplicaciones que permitan al usuario definir varias facturas diferentes, con la posibilidad de gestionarlasindependientemente o conjuntamente pero cada una en una ventana.

Para crear este tipo de aplicaciones es necesario seguir el siguiente proceso:

Se han de añadir al proyecto tantos formularios como ventanas diferentes deseemos tener en la misma.

Situarse en la ventana de soluciones y seleccionar la carpeta del proyecto.

Pulsar botón derecho del ratón, aparecerá un menú contextual.

Elegir opción agregar, aparece un submenú.

Elegir agregar Windows Forms

Sale ventana que confirma el nuevo elemento a agregar y permite además poner un nombre al nuevoformulario

Aparecerá en la ventana de soluciones el nuevo formulario agregado.

Especificar a VB, que uno de los formularios es el padre de todos.

Seleccionar y abrir el formulario

Acceder a la ventana de propiedades

Establecer la propiedad ISMDICONTAINER a trae

Veremos que el color del fondo del formulario cambia a un tono más oscuro.

A este formulario se le puede añadir cualquier control igual que hacíamos con un formulario normal.

CLASES BÁSICAS DEL .NET FRAMEWORK

55

Page 87: Módulo_5_Clases Básicas del .NET Framework

Es necesario añadir algún control o elemento en el formulario padre que permita crear y abrir nuevosformularios hijos, esto podría ser un botón o alguna opción de menú, etc. Todo lo veremos mas tarde en ellibro.

Especificar la relación de parentesco entre este formulario padre y uno de los hijos.

Esto se realiza mediante código, utilizando la propiedad MDIPARENT del formulario hijo, lo vamos a ver acontinuación.

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

Dim ventana As New HIJA()ventana.MdiParent = Meventana.Show()

End Sub

Se ha puesto un botón de comando en el formulario padre, y se le ha asociado el código anterior, estesolamente crea una variable objeto para recibir el objeto que representa al formulario hijo que se ledenominó HIJA, posteriormente se especifica que el formulario padre del hijo es el formulario actual, es decirdonde se esta codificando que es el formulario padre, finalmente se muestra este formulario.

Organización de los formularios hijos en aplicaciones MDI

La mayoría de las aplicaciones con el interfaz MDI, permiten que el usuario cuando abre muchas ventanas,pueda organizar estas ventanas de manera que sea mas fácil la localización de las mismas, suelen existir unaserie de organizaciones predefinidas como puede ser en cascada, en mosaico horizontal y en mosaico vertical,para conseguir este efecto en nuestras aplicaciones MDI deberemos de teclear el siguiente código.

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Me.LayoutMdi(MdiLayout.Cascade)End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Me.LayoutMdi(MdiLayout.TileHorizontal)

End Sub

CLASES BÁSICAS DEL .NET FRAMEWORK

56

Page 88: Módulo_5_Clases Básicas del .NET Framework

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Me.LayoutMdi(MdiLayout.TileVertical)End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

Me.LayoutMdi(MdiLayout.ArrangeIcons)End Sub

En este ejemplo se han puesto tres botones en el formulario padre para que puedan establecer los diferentestipos de organización disponibles en las aplicaciones MDI.

Determinar cual es el formulario MDI activo

Para hacer determinadas tareas en uno de los formularios hijos de una aplicación MDI , y no en otro, esfundamental saber cual de todos los formularios es el que esta activo, esto se consigue mediante la propiedadACTIVEMDICHILD de los formularios, vamos a ver a continuación un trozo de código que lo prueba.

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

Dim ventana1 As New HIJA()If Me.ActiveMdiChild Is Nothing Then

ventana1.MdiParent = Meventana1.Show()

ElseIf Me.ActiveMdiChild.Name = ventana.Name ThenMessageBox.Show(“LA VENTANA YA ESTA ACTIVA”)

End IfEnd Sub

En el código anterior vemos que existe en un formulario padre un botón que permite abrir ventanas hijas,pero si esta ya esta activa no va abrirla de nuevo.

La primera sentencia condicional comprueba si existe algún formulario que sea hijo en este momento abierto,si no existe ninguno la propiedad activemdichild no estará inicializada, por lo que se abre el formulario hijodel actual.

La segunda condicional comprueba en caso de que haya algún formulario hijo activo si este tiene el mismonombre que el formulario que esta asignado a la variable ventana, para mostrar un mensaje alusivo.

CLASES BÁSICAS DEL .NET FRAMEWORK

57

Page 89: Módulo_5_Clases Básicas del .NET Framework

Determinar el número de formularios hijos abiertos

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

MessageBox.Show(Me.MdiChildren.Length())End Sub

En este código se utiliza la propiedad MDICHILDREN, que es una realmente lo que se llama una colección, esdecir, es una propiedad que contiene un conjunto de elementos, en concreto todos los elementoscorrespondientes a las ventanas hijas que en este momento estén abiertas en la aplicación MDI.

La propiedad length de la colección devuelve el número total de elementos que en este momento tiene.

Formularios Esclavos

Es un tipo especial de formularios que se caracterizan porque dependen de otros formularios.

Tienen un formulario que es su dueño. Si el dueño se minimiza o se cierra, automáticamente se cierra losformularios esclavos del mismo, otras tareas posibles a realizar con los formularios no están sincronizadas.Un formulario esclavo nunca se mostrará por detrás de su formulario dueño.

Los formularios esclavos se pueden cerrar o minimizar sin que ello afecte al formulario dueño.

Se suelen utilizar estos formularios especiales cuando se desea hacer una determinada tarea como pueda seruna búsqueda de un determinado valor en un formulario a trabes de opciones que se muestren en otroformulario, de manera que este formulario de opciones siempre este visible. El formulario de opciones debúsqueda será el formulario esclavo, mientras que el formulario donde se hace la búsqueda es el dueño delanterior.

La propiedad de los formularios que permite este tipo de formularios es OWNER.

Vamos a ver un trozo de código donde se consigue este efecto.

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

Dim TIRA1 As New TIRANO()Dim ESCLAVITO As New ESCLAVO()

ESCLAVITO.Owner = TIRA1TIRA1.Show()ESCLAVITO.Show()

End Sub

CLASES BÁSICAS DEL .NET FRAMEWORK

58

Page 90: Módulo_5_Clases Básicas del .NET Framework

Otra forma:

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

Dim VENTANA2 As New ESCLAVO()Dim VENTANA3 As New ESCLAVO2()Dim VENTANA4 As New ESCLAVO3()

Me.AddOwnedForm(VENTANA2)Me.AddOwnedForm(VENTANA3)Me.AddOwnedForm(VENTANA4)

VENTANA2.Show()VENTANA3.Show()VENTANA4.Show()

End Sub

En este caso existen a parte de otros posibles formularios dos formularios en el proyecto, uno llamado TIRANOy otro llamado ESCLAVO, se declaran dos variables de tipo objeto para recibir los dos objetos de formulario.Al formulario que va a funcionar como esclavo le asignamos su propiedad owner a la variable objeto quecontiene el formulario dueño.

Después se pueden abrir los formularios en cualquier momento, comprando que el formulario dueño dirigeal esclavo en algunas de sus funcionalidades.

En la parte inferior del ejemplo se muestra una alternativa de creación de formularios esclavos mediante elmétodo ADDOWNERFORM, que pide como argumento el formulario que deseemos que se añada como esclavodel que estemos utilizando.

Se consigue con esta parte del código que aparezcan tres formularios esclavos del formulario dueño.

Formularios Predefinidos

Son unos formularios mediante los cuales se realizan una serie de tareas básicas muy estandarizadas. Elaspecto como la funcionalidad están establecidas ya que se muestran igual y hacen lo mismo en la mayoríade las aplicaciones de Windows.

CLASES BÁSICAS DEL .NET FRAMEWORK

59

Page 91: Módulo_5_Clases Básicas del .NET Framework

Para conseguir que nuestras aplicaciones trabajen con estos formularios es necesario insertar una serie decontroles invisibles en nuestro proyecto.

Estos controles se ven en modo diseño pero no en modo ejecución, todos ellos se muestran en una ventanaespecial de nuestros proyectos que se suele mostrar en la parte inferior de nuestra pantallas justo debajodel diseñador de formularios, en ella es posible moverlos, borrarlos y acceder a las propiedades libremente.Para insertarlos simplemente hay que ir al cuadro de herramientas y dar un doble clic en ellos, como cualquierotro control.

Estos formularios predefinidos son:

OpenFileDialogMuestra el típico cuadro de dialogo Windows para abrir ficheros

Propiedades públicas

AddExtensionObtiene o establece un valor que indica si el cuadro de diálogo agrega automáticamente una extensión a unnombre de archivo en caso de que el usuario omita dicha extensión.

CLASES BÁSICAS DEL .NET FRAMEWORK

60

Page 92: Módulo_5_Clases Básicas del .NET Framework

CheckFileExistsReemplazado. Obtiene o establece un valor que indica si el cuadro de diálogo muestra una advertenciacuando el usuario especifica un nombre de archivo que no existe.

CheckPathExistObtiene o establece un valor que indica si el cuadro de diálogo muestra una advertencia cuando el usuarioespecifica una ruta de acceso que no existe.

ContainerObtiene IContainer que contiene Component.

DefaultExtObtiene o establece la extensión de nombre de archivo predeterminada.

DeferenceLinksObtiene o establece un valor que indica si el cuadro de diálogo devuelve la ubicación del archivo al que hacereferencia el acceso directo o bien devuelve la ubicación del acceso directo (.lnk).

FileNameObtiene o establece una cadena que contiene el nombre de archivo seleccionado en el cuadro de diálogo dearchivo.

FileNamesObtiene los nombres de todos los archivos seleccionados en el cuadro de diálogo.

FilterObtiene o establece la cadena actual de filtro de nombres de archivo, que determina las opciones queaparecen en los cuadros “Guardar como archivo de tipo” o “Archivos de tipo” del cuadro de diálogo.

FilterIndexObtiene o establece el índice del filtro actualmente seleccionado en el cuadro de diálogo de archivo.

InitialDirectoryObtiene o establece el directorio inicial que muestra el cuadro de diálogo de archivo.

MultiselectObtiene o establece un valor que indica si el cuadro de diálogo permite seleccionar varios archivos.

CLASES BÁSICAS DEL .NET FRAMEWORK

61

Page 93: Módulo_5_Clases Básicas del .NET Framework

ReadOnlyCheckedObtiene o establece un valor que indica si la casilla de verificación de sólo lectura está activada.

RestoreDirectoryObtiene o establece un valor que indica si el cuadro de diálogo restaura el directorio actual antes de cerrarse.

ShowHelpObtiene o establece un valor que indica si se muestra el botón Ayuda en el cuadro de diálogo de archivo.

ShowReadOnlyObtiene o establece un valor que indica si el cuadro de diálogo contiene una casilla de verificación de sólolectura.

SiteObtiene o establece ISite de Component.

TitleObtiene o establece el título del cuadro de diálogo de archivo.

ValidateNamesObtiene o establece un valor que indica si el cuadro de diálogo acepta sólo nombres de archivo Win32 válidosMétodos públicos

CreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado paracomunicarse con un objeto remoto.

DisposeLibera los recursos utilizados por Component.

EqualsDetermina si dos instancias de Object son iguales.

GetHashCodeSirve como función hash para un tipo concreto, apropiado para su utilización en algoritmos de hash yestructuras de datos como las tablas hash.

GetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

CLASES BÁSICAS DEL .NET FRAMEWORK

62

Page 94: Módulo_5_Clases Básicas del .NET Framework

GetTypeObtiene el objeto Type de la instancia actual.

InitializeLifetimeServiceObtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

OpenFileAbre el archivo seleccionado por el usuario con permiso de sólo lectura. La propiedad FileName especificael archivo.

ResetRestablece los valores predeterminados de todas las propiedades.

ShowDialogEjecuta un cuadro de diálogo común.

ToStringDevuelve un objeto String que representa al objeto Object actual.

Vamos a ver mediante ejemplos la utilización de este control.

Private Sub abrirfichero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles abrirfichero.Click

ABRIR.ShowDialog()End Sub

Este código muestra la utilización más básica del cuadro de dialogo, simplemente permite mostrar el cuadrosin mas.

Private Sub abrirfichero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles abrirfichero.Click

Dim ficheros() As StringDim a As String

ABRIR.Title = “Abrir Ficheros”ABRIR.InitialDirectory = “c:\winnt”ABRIR.DefaultExt = “doc”ABRIR.CheckFileExists = FalseABRIR.CheckPathExists = False

CLASES BÁSICAS DEL .NET FRAMEWORK

63

Page 95: Módulo_5_Clases Básicas del .NET Framework

ABRIR.ReadOnlyChecked = TrueABRIR.ShowReadOnly = TrueABRIR.ShowHelp = TrueABRIR.Multiselect = TrueABRIR.Filter = “Archivos BitMap|*.bmp|Archivos Texto|*.txt|todos|*.*“ABRIR.ShowDialog()

ficheros = ABRIR.FileNames

For Each a In ficherosMessageBox.Show(a)

NextEnd Sub

Inicialmente se declara un array de cadenas para recibir todos los nombres de los ficheros que el usuario hayaseleccionado para abrir.Se establece que el titulo del cuadro de dialogo sea Abrir Ficheros.Se establece que el directorio por defecto, es decir el que se muestra inicialmente sea c:\winnt.La extensión por defecto va a ser doc, de manera que si el usuario teclea el nombre de un archivo a abrir enla caja de texto nombre, del cuadro de dialogo, y no le pone una extensión determinada, esta será doc.Se van a desactivar las opciones de chequeo de existencia de archivo y de existencia de directorio. Estas dosopciones por defecto están activas y permiten mostrar un mensaje que indica que el fichero que el usuarioha tecleado no existe o bien que la trayectoria que el usuario ha tecleado no existe, de lo contrario no semuestra este mensaje.Se activa que aparezca un mensaje alusivo, si el fichero a abrir es de solo lectura.Se activa que se muestre en el cuadro combinado la casilla de verificación de solo lectura.Se activa que aparezca el botón de ayuda en el cuadro de dialogo Standard.Se activa la posibilidad de que el usuario pueda elegir en un momento más de un archivo a abrir.Se establece un filtro, los filtros se definen mediante una cadena de caracteres que puede estar separadaen varias partes por líneas verticales, lo que se pone delante de la línea vertical es el mensaje que el cuadrode dialogo abrir Standard exhibe en tipo de archivo, lo que está detrás de la línea vertical es el filtro en si,en el que normalmente se utilizan caracteres comodín típicos del sistema operativo. En el ejemplo se van a mostrar los mensajes Archivos BitMap, Archivos Texto y Todos, en el cuadro combinadotipo de archivos del cuadro de dialogo abrir Standard, en el momento de que el usuario elija uno de estostipos de archivos automáticamente se activa el filtro correspondiente, es decir que se elige Archivos BitMap,solamente se mostraran los archivos que cumplan el filtro *.bmp, por lo tanto solo los archivos con laextensión bmp son los que se pueden seleccionar, lo mismo sucederá con los otros tipos de archivos.

CLASES BÁSICAS DEL .NET FRAMEWORK

64

Page 96: Módulo_5_Clases Básicas del .NET Framework

Inmediatamente se muestra el cuadro de dialogo Standard de abrir, con todas las características previamenteestablecidas, lógicamente estas características se han de establecer siempre antes de abrir el cuadro dediálogo.Una vez que el usuario haya seleccionado los archivos, se van a almacenar todos estos archivos en unaarray de cadenas, este array es dinámico es decir tendrá tantos elementos como archivos haya seleccionadoel usuario.Finalmente se van a mostrar la trayectoria y el nombre de todos los archivos seleccionados por el usuario.

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

ABRIR.FileName = “PISTACHITO.DOC”ABRIR.ShowDialog()MessageBox.Show(ABRIR.FileName)

End Sub

En este otro ejemplo se observa que ya se determina el nombre y extensión del archivo que va a apareceren la caja de texto nombre de archivo del cuadro de dialogo Standard.

Después se muestra la propia caja de diálogo.

Finalmente se muestra el archivo que el usuario haya seleccionado, o el que haya tecleado, y si no haseleccionado ninguno o no lo ha tecleado se muestra el que expresamente se ha definido, es decirPISTACHITO.DOC

Si en el cuadro de diálogo Abrir fichero se muestra el botón de ayuda, es necesario captar el evento de queel usuario pulse el botón, esto se realiza mediante el procedimiento de evento HELPREQUEST del cuadrocombinado.

Para conseguir codificar este evento simplemente en la pantalla de código es necesario en el cuadrocombinado de los objetos, que se encuentra en la parte superior izquierda elegir el objeto del cuadrocombinado a trabajar, inmediatamente se ha de elegir en el cuadro combinado de los procedimientos, el queestá en la esquina superior derecha, el evento adecuado.

Todo lo que codifiquemos en este procedimiento de evento se va a ejecutar cuando el usuario pulse al botónde ayuda del cuadro de dialogo predefinido.

Vamos a ver un ejemplo de código.

CLASES BÁSICAS DEL .NET FRAMEWORK

65

Page 97: Módulo_5_Clases Básicas del .NET Framework

Private Sub ABRIR_HelpRequest(ByVal sender As Object, ByVal e As System.EventArgs) Handles ABRIR.HelpRequest

MessageBox.Show(“has pulsado ayuda de abrir”)End Sub

Se supone que insertado un control OpenfileDialog en el formulario al que he llamado ABRIR. He escritocódigo en el formulario para especificar que deseo que en el cuadro de dialogo ABRIR deseo que se muestreel botón de ayuda:

ABRIR.ShowHelp = True

He mostrado el cuadro de dialogo ABRIR:

ABRIR.ShowDialog()

Después estando en el editor de código he elegido el objeto ABRIR, y en el cuadro de procedimientos deevento el evento HELPREQUEST.

Todo esto que he comentado para el control OpenfileDialog y su botón de ayuda es exactamente igual paracualquier cuadro de dialogo predefinido que tenga un botón de ayuda.

SaveFileDialogMuestra el cuadro de dialogo Standard para grabar ficheros Guardar Como.

Es prácticamente igual que el anterior puesto que tiene casi las mismas propiedades, solamente hay dosespecíficas de este cuadro de dialogo:

CREATEPROMPT – Puede establecerse a verdad o falso y permite que se muestre un mensaje al usuarioreferente a si se puede crear el archivo tecleado por el usuario cuando este archivo no existe. Por defectoesta activo, se muestra el mensaje, pero hay que tener en cuenta que realmente el control no crea un nuevoarchivo, habrá que codificar la acción expresamente.

OVERWRITEPROMPT – Como la anterior se puede establecer a verdadero o a falso y permite que se muestreun mensaje alusivo a si se puede reemplazar el archivo que el usuario ha tecleado en caso de que exista. Pordefecto está activo, es decir se muestra el mensaje, pero si el usuario elige que si se desea reemplazarrealmente no se reemplaza el archivo hay que codificar esta tarea.

CLASES BÁSICAS DEL .NET FRAMEWORK

66

Page 98: Módulo_5_Clases Básicas del .NET Framework

Private Sub grabarfichero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles grabarfichero.Click

GUARDAR.Title = “Guardando Archivos”GUARDAR.InitialDirectory = “c:\winnt”GUARDAR.Filter = “Archivos BitMap|*.bmp|todos|*.*“GUARDAR.ShowDialog()

End Sub

Como vemos el código es exactamente igual que el del otro cuadro de dialogo standard.

FontDialogPermite mostrar al usuario el cuadro de dialogo Standard para la selección de fuentesPropiedades públicas

AllowScriptChangeCapta o pone un valor que indica si el usuario puede cambiar el juego de caracteres especificado en el cuadrocombinado Script para mostrar un juego de caracteres diferente del que aparece.

AllowSimulationsCapta o pone un valor que indica si el cuadro de diálogo permite las simulaciones de fuente de la interfazde dispositivo gráfico (GDI).

AllowVectorFontsCapta o pone un valor que indica si se permite la selección de fuentes de vector en el cuadro de diálogo.

AllowVerticalFontsCapta o pone un valor que indica si el cuadro de diálogo muestra tanto fuentes horizontales como verticaleso sólo fuentes horizontales.

ColorCapta o pone el color de la fuente seleccionada.

Container Obtiene IContainer que contiene Component.

FixedPitchOnlyCapta o pone un valor que indica si el cuadro de diálogo permite sólo la selección de fuentes de punto fijo.

CLASES BÁSICAS DEL .NET FRAMEWORK

67

Page 99: Módulo_5_Clases Básicas del .NET Framework

FontCapta o pone la fuente seleccionada.

FontMustExistCapta o pone un valor que indica si el cuadro de diálogo debe especificar una condición de error cuando elusuario intente seleccionar una fuente o un estilo que no exista.

MaxSizeCapta o pone el tamaño de punto máximo que un usuario puede seleccionar.

MinSizeCapta o pone el tamaño de punto mínimo que un usuario puede seleccionar.

ScriptsOnlyCapta o pone un valor que indica si el cuadro de diálogo permite la selección de fuentes para todos los juegosde caracteres no OEM y Symbol, así como para el juego de caracteres ANSI.

ShowApplyCapta o pone un valor que indica si el cuadro de diálogo contiene un botón Aplicar.

ShowColorCapta o pone un valor que indica si el cuadro de diálogo muestra la opción de color.

ShowEffectsCapta o pone un valor que indica si el cuadro de diálogo contiene controles que permiten al usuarioespecificar opciones de tachado, subrayado y color del texto.

ShowHelpCapta o pone un valor que indica si el cuadro de diálogo presenta un botón Ayuda.

Site Capta o pone ISite de Component.

CLASES BÁSICAS DEL .NET FRAMEWORK

68

Page 100: Módulo_5_Clases Básicas del .NET Framework

El cuadro de dialogo que se muestra es el siguiente:

Vamos a mostrar mediante ejemplos el uso de este control:

Private Sub fuentes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles fuentes.Click

FUENTE.ShowColor = TrueFUENTE.AllowScriptChange = TrueFUENTE.ShowApply = TrueFUENTE.ShowHelp = TrueFUENTE.MaxSize = 90FUENTE.MinSize = 4FUENTE.ShowDialog()TextBox1.Font = FUENTE.FontTextBox1.ForeColor = FUENTE.Color

End Sub

En este ejemplo se ve como poder mostrar al usuario la caja de dialogo Standard de gestión de fuentes, paraque se pueda cambiar las características de la fuente de una caja de texto.

CLASES BÁSICAS DEL .NET FRAMEWORK

69

Page 101: Módulo_5_Clases Básicas del .NET Framework

Primeramente se activa la posibilidad de que en el cuadro de dialogo Standard se puedan cambiar los coloresde las fuentes.Después se especifica que se puedan cambiar el conjunto de caracteres, para fuentes de otros idiomas.Se activa el que se muestre el botón aplicar en el cuadro de dialogo.Se activa el que se muestre el botón de ayuda en el cuadro de diálogo.Se establece el tamaño máximo y mínimo de las fuentes que el usuario puede definir en el cuadro de dialogofuentes.Se muestra el cuadro de dialogo Standard para las fuentes.Se establece la fuente de la caja de texto a la fuente seleccionada en el cuadro de dialogo.Se establece el color de la fuente para la caja de texto, al color de fuentes elegida en el cuadro de diálogo.Cuando se pone en este tipo de cuadro de dialogo el botón de Aplicar es necesario seguir el mismo procesoque seguíamos cuando poníamos el botón de ayuda salvo que ahora el procedimiento de evento a codificares el APPLY.Vamos a ver un trozo de código

Private Sub FUENTE_Apply(ByVal sender As Object, ByVal e As System.EventArgs) Handles FUENTE.Apply

MessageBox.Show(“has pulsado aplicar de fuentes”)End Sub

el código es exactamente igual que el que vimos con HelpRequest.ColorDialog

PROPIEDADES PÚBLICAS

AllowFullOpenObtiene o establece un valor que indica si el usuario puede utilizar el cuadro de diálogo para definir colorespersonalizados.

AnyColorObtiene o establece un valor que indica si el cuadro de diálogo muestra todos los colores disponibles en elconjunto de colores básicos.

ColorObtiene o establece el color seleccionado por el usuario.

ContainerObtiene IContainer que contiene Component.

CLASES BÁSICAS DEL .NET FRAMEWORK

70

Page 102: Módulo_5_Clases Básicas del .NET Framework

CustomColorsObtiene o establece el conjunto de colores personalizados que se muestran en el cuadro de diálogo.

FullOpenObtiene o establece un valor que indica si los controles utilizados para crear colores personalizados sonvisibles al abrir el cuadro de diálogo

ShowHelpObtiene o establece un valor que indica si aparecerá el botón Ayuda en el cuadro de diálogo de colores.

Site Obtiene o establece ISite de Component

.SolidColorOnlyObtiene o establece un valor que indica si el cuadro de diálogo muestra únicamente colores sólidos paraelegir, esta propiedad es efectiva cuando el sistema trabaja con 256 colores solamente.

MÉTODOS PÚBLICOS

Los métodos son los mismos que en los otros cuadros de diálogo así como los eventos.

Vamos a ver mediante ejemplos la utilización de este cuadro de dialogo.

Private Sub colores_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles colores.Click

COLOR.ShowDialog()Me.BackColor = COLOR.Color

End Sub

Este es un ejemplo de código básico de utilización del cuadro de dialogo, en el que se muestra el mismo contodas sus posibilidades y posteriormente el color que haya elegido el usuario se establece como color defondo del formulario.

Private Sub colores_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles colores.Click

COLOR.FullOpen = TrueCOLOR.ShowDialog()Me.BackColor = COLOR.Color

End Sub

CLASES BÁSICAS DEL .NET FRAMEWORK

71

Page 103: Módulo_5_Clases Básicas del .NET Framework

En este código se va a hacer exactamente igual que en el código anterior, salvo que cuando se abre el cuadrode dialogo automáticamente se muestra la opción de definir colores personalizados, sino no se establece estapropiedad para poder definir colores personalizados debemos de pulsar al botón especifico para ello.

Private Sub colores_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles colores.Click

COLOR.AllowFullOpen = FalseCOLOR.ShowHelp = True

COLOR.ShowDialog()Me.BackColor = COLOR.Color

End Sub

Este ejemplo no permite que el usuario pueda definir colores personalizados, porque desactiva el botóncorrespondiente. Se observa que se activado el botón de ayuda para el cuadro de diálogo.

Private Sub colores_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles colores.Click

Dim colores() As IntegerDim valor As IntegerDim a As Integer

COLOR.AnyColor = TrueCOLOR.ShowHelp = TrueCOLOR.ShowDialog()colores = COLOR.CustomColors()For Each valor In colores

MessageBox.Show(valor)Me.BackColor = System.Drawing.ColorTranslator.FromWin32(valor)

Next

End Sub

En este código se permite que el usuario defina los colores predefinidos que el desee en el cuadro de diálogode colores. Este se muestra con el botón de ayuda y con todos los colores básicos posibles.

Después se agregan a un array de integer todos los valores de los colores predefinidos establecidos por elusuario, mediante la propiedad CUSTOMCOLORS.

CLASES BÁSICAS DEL .NET FRAMEWORK

72

Page 104: Módulo_5_Clases Básicas del .NET Framework

El máximo de colores predefinidos que el usuario puede definir en el cuadro de diálogo son 16. Se van acaptar los 16 colores aunque el usuario no los haya establecido, es decir si el usuario define 4 colorespredefinidos CUSTOMCOLORS tiene los valores, en tipo entero, de esos colores mas 12 colores blancos.

Posteriormente se recorren todos los elementos del array de colores predefinidos para que por cada elementose muestre el valor del color y finalmente se ponga al color de fondo del formulario el color correspondiente.

System.Drawing.ColorTranslator.FromWin32 es necesario para convertir un número entero en un valor decolor factible para el objeto color que requiere la propiedad Backcolor, de otra forma no es posible convertirun entero a un color.

CLASES BÁSICAS DEL .NET FRAMEWORK

73