Buscador

CheckBox

Este control consiste en una casilla de verificación, que podemos marcar para establecer un estado. Generalmente el estado de un CheckBox es marcado (verdadero) o desmarcado (falso), sin embargo, podemos configurar el control para que sea detectado un tercer estado, que se denomina indeterminado, en el cual, el control se muestra con la marca en la casilla pero en un color de tono gris. Las propiedades remarcables de este control son las siguientes. 
• Checked. Valor lógico que devuelve True cuando la casilla está marcada, y False cuando está desmarcada. 
• CheckState. Valor del tipo enumerado CheckState, que indica el estado del control. Checked, marcado; Unchecked, desmarcado; e Indeterminate, indeterminado. 
• ThreeState. Por defecto, un control de este tipo sólo tiene dos estados, pero asignando True a esta propiedad, conseguimos que sea un control de tres estados. 
• CheckAlign. Permite establecer de modo visual la ubicación de la casilla de verificación dentro del área del control. Un detalle destacable de las propiedades Checked y CheckState, consiste en que si modificamos desde código sus valores, conseguiremos alterar el estado de la casilla del control. Como muestra para nuestro programa, añadiremos un CheckBox con el nombre chkCompra, para indicar si el cliente al que se realiza la encuesta, ha efectuado algún tipo de compra en el establecimiento. Ver la Figura 148.
Figura 148. Formulario incluyendo control CheckBox.

TextBox - III

En Cuanto a TextBox control de los eventos párr la ONU el, en este EJEMPLO Vamos a Codificar el Evento TextChanged, Que se produzca Cada Vez Que el texto escribe usuario en el control de el. El control de txtNombre de sueros de El codifiquemos Que, y vamos a utilizar para visualizar la CANTIDAD de caractères Escritos, el pecado Etiqueta de control de aire el Nombre lblNumLetras. Ver el Código fuente 387.

Private Sub Remitente txtNombre_TextChanged (ByVal COMO System.Object, _
ByVal e As System.EventArgs) Handles txtNombre.TextChanged
Me.lblNumLetras.Text = Me.txtNombre.Text.Length
End Sub
Código fuente 387
Al ejecutar el Programa, es el Sello del situado al Lado del TextBox, visualizaremos la CANTIDAD de texto Escrito, COMO Muestra la Figura 147.
Figura 147. El formulario mostrando el número de caracteres del TextBox.

TextBox - II

En el Formulario de our EJEMPLO vamos a introducir dos TextBox: El Primero, Con El Nombre txtNombre, lo usaremos párr ESCRIBIR el Nombre completo del Cliente; El Segundo, Con El Nombre txtObservaciones, Que configuraremos en Modo Multilínea, lo usaremos párr introducir Observaciones Diversas . Ver la Figura 146.
Figura 146. Incorporación de Controles TextBox al Formulario.

TextBox - I

El control TextBox Un representante de Una caja en La Que Podemos ESCRIBIR Una o Varias Líneas de texto, Segun configuremos suspensiones Propiedades. Para Poder Escribir texto en el control de la ONU de Este Tipo, debemos primeramente Darle el foco MEDIANTE Alguna de las Formas Estándar DISPONIBLES en Ventanas: Haciendo clic Sobre el control, o pulsando la Tecla [TAB]; muestre el control CUANDO el el cursor de escritura en do interior sabremos Que ACABA de Tomar El Foco Y PODEMOS ESCRIBIR en el. Entre las Propiedades DISPONIBLES porción Este control, destacaremos Las Siguientes. 
• Texto. Cadena Con El Texto del control.
• Multilínea. PODEMOS SI establecer Permite ESCRIBIR UNA O VARIAS Líneas. Por Defecto contains Falso, PODEMOS Solo Por Lo Que ESCRIBIR EL text in Una línea ahora. 
• WordWrap. En Controles Multilínea, Cuando do valor es cierto que al llegar Ver al final, del control de CUANDO ESTAMOS ESCRIBIENDO, Realiza sin Desplazamiento Automático del cursor de escritura a la siguiente línea de texto. 
• Habilitado. Contiene sin valor lógico MEDIANTE EL Que indicamos si no está el control de el o no Habilitado párrafo ESCRIBIR Poder Sobre Texto EL. 
• ReadOnly. Permite Indicar si el Contenido del control de sueros De Solo Lectura o bien, Podremos editarlo. 
• CharacterCasing. Propiedad Esta, permite el control de Que convierta automaticamente el Texto a Mayúsculas o Minúsculas según rubro lo ESTAMOS ESCRIBIENDO. 
• MaxLength. Valor numérico Que Establece El Número Máximo de Caracteres Que Podremos ESCRIBIR en el control de el. 
• PasswordChar. Carácter de pisos máscara, Que sera visualizado porción CADA Carácter Que Escribá el usuario en el control de el. De this forma, PODEMOS DAR una ONU Cuadro de texto el Estilo de la ONU campo de Introducción de CONTRASEÑA. 
El control TextBox Un representante de Una caja en La Que Podemos ESCRIBIR Una o Varias Líneas de texto, Segun configuremos suspensiones Propiedades. Para Poder Escribir texto en el control de la ONU de Este Tipo, debemos primeramente Darle el foco MEDIANTE Alguna de las Formas Estándar DISPONIBLES en Ventanas: Haciendo clic Sobre el control, o pulsando la Tecla [TAB]; muestre el control CUANDO el el cursor de escritura en do interior sabremos Que ACABA de Tomar El Foco Y PODEMOS ESCRIBIR en el. Entre las Propiedades DISPONIBLES porción Este control, destacaremos Las Siguientes. • Texto. Cadena Con El Texto del control. • Multilínea. PODEMOS SI establecer Permite ESCRIBIR UNA O VARIAS Líneas. Por Defecto contains Falso, PODEMOS Solo Por Lo Que ESCRIBIR EL text in Una línea ahora. • WordWrap. En Controles Multilínea, Cuando do valor es cierto que al llegar Ver al final, del control de CUANDO ESTAMOS ESCRIBIENDO, Realiza sin Desplazamiento Automático del cursor de escritura a la siguiente línea de texto. • Habilitado. Contiene sin valor lógico MEDIANTE EL Que indicamos si no está el control de el o no Habilitado párrafo ESCRIBIR Poder Sobre Texto EL. • ReadOnly. Permite Indicar si el Contenido del control de sueros De Solo Lectura o bien, Podremos editarlo. • CharacterCasing. Propiedad Esta, permite el control de Que convierta automaticamente el Texto a Mayúsculas o Minúsculas según rubro lo ESTAMOS ESCRIBIENDO. • MaxLength. Valor numérico Que Establece El Número Máximo de Caracteres Que Podremos ESCRIBIR en el control de el. • PasswordChar. Carácter de pisos máscara, Que sera visualizado porción CADA Carácter Que Escribá el usuario en el control de el. De this forma, PODEMOS DAR una ONU Cuadro de texto el Estilo de la ONU campo de Introducción de CONTRASEÑA. • AutoSize. De Cuando this Propiedad del tenga el valor verdadero, al Modificar el pelotas del Tipo de letra del control, control DICHO sí redimensionará automaticamente, ajustando do no molestar al del Tipo de Letra establecido.

Codificación de los eventos de controles - IV

El Codigo un ESCRIBIR párrafo this Evento consistirá en Tomar el control de btnSalir, y asignarle Una nueva Cadena una Propiedad Texto do. Para el Evento MouseLeave, el Proceso Sera exactamente Igual, Pero asignando a la Propiedad del texto el título Que inicialmente tenia el control de el. El Código fuente 386 Muestra Ambos procedimientos de Evento.

Private Sub remitente btnSalir_MouseEnter (ByVal como objeto, _
ByVal e As System.EventArgs) Handles btnSalir.MouseEnter
Me.btnSalir.Text = "¡¡SORPRESA!"
End Sub
Private Sub remitente btnSalir_MouseLeave (ByVal como objeto, _
ByVal e As System.EventArgs) Handles btnSalir.MouseLeave
Me.btnSalir.Text = "Salir"
End Sub
Código fuente 386
Realizadas ESTAS incorporaciones en el Código del Programa, al ejecutar de Como comprobaremos situando el cursor en el botón, this in English Cambia do título, recuperándolo al abandonarlo. Ver la Figura 145.
Figura 145. Button El control de Cambia do al título Para entrar el cursor.

Codificación de los eventos de controles - III

Situándonos en la ventana del editor de Código, HAREMOS clic en la Lista desplegable de Nombre de Clase, situada en la Parte Superior Izquierda del editor, seleccionaremos y El controlan un Codificar: btnSalir, COMO Muestra la Figura 143. A continuacion abriremos La Lista desplegable de Nombre de Método, Que mostrará la Lista de eventos available párrafo de control el Que acabamos de ELEGIR. Seleccionando MouseEnter, COMO VEMOS en la Figura 144, el editor de Código nos proporcionará el Procedure párrafo Este evento, del listo Para Qué escribamos do Código
Figura 143. Selección del control tenga Codificar.
Figura 144. Selección del evento ¿un Codificar párr control de la ONU.

Codificación de los eventos de controles - II

Private Sub Remitente btnSalir_Click (ByVal COMO System.Object, ByVal e As
System.EventArgs) Handles btnSalir.Click
Me.Close ()
End Sub
Código fuente 385


Observe el lector Que en el Código de la Clase generada Por El: Diseñador del Formulario, el los CONTROLES sí declaran con La Palabra WithEvents Clavé, Por Lo Que Al ESCRIBIR los procedimientos manipuladores de evento, del Estós conectan Con El Evento adecuado MEDIANTE La Palabra manijas Clave. Ejecutando en el Estado real el Proyecto, observaremos de Como al pulsar el control el btnSalir del Formulario, this Sera cerrado. El Evento Que acabamos De Escribir es el denominado Evento Por Defecto, y recibe this Nombre, PORQUE ES EL Que se Muestra en el editor de Código CUANDO HACEMOS doble clic Sobre el control de el, en el: Diseñador del Formulario. 
No obstante, la ONU Tiene el control Otra serie de eventos ADEMÁS del evento ¿Por Defecto, párr TRATAR los Diversos Sucesos Que pueden acontecerle. EJEMPLO Por, Cuando situamos el cursor del Ratón Sobre Button un, sí producen el Evento MouseEnter, indicativo de Que el control de El Ratón no está Entrando en el área Que OCUPA el en el Formulario. De forma inversa, Cuando El Ratón abandona el control El Espacio Ocupado Por El sí producen el Evento MouseLeave. 
Supongamos Que CUANDO El Ratón entra en la zona del botón de control, QUEREMOS change el Texto de control de este, la venta y CUANDO, lo dejamos de como estába originalmente. En Este Caso, y de como no ESTAMOS Trabajando Con Los eventos porción Defecto del control, el Modo Más Fácil De Escribir do manipulador es el siguiente.

Codificación de los eventos de controles - I

Operativo Sistema de las Naciones Unidas de Windows es Orientado a eventos, he aquí Por Que Cualquier Minima Interacción Que realicemos Sobre el control de la ONU Formulario o, generará el Correspondiente Evento o Suceso Sobre DICHO Objeto visual, párr Que el Código deberemos ESCRIBIR SI ESTAMOS Interesados ​​en Darle Respuesta. En el Caso del botón de control Que acabamos de ESQUEMA Añadir, Cuando pulsamos Sobre el sí producir do Evento Click. Si ejecutamos en Este Momento el Programa, al pulsar Sobre El Botón btnSalir hay nada ocurrirá, ya Que aunque el Evento sí producen, no EXISTE Código Que le proporcione Respuesta. 
ESTO lo solucionamos ESCRIBIENDO UN Procedure manipulador de evento, del al Estilo de los manipuladores explicados en el tema de Sobre Tratamiento de eventos;. Revisar el DICHO lector el tema de párrafo Una Referencia Sobre la Creación y Manipulación de eventos en el Entorno de NET. Codificar Para el clic Evento de nuestro de Button, El Medio Más Rápido coinci en doble mando HACER DICHO Sobre click en el: Diseñador del Formulario. This Acción nos llevará al editor de Código, Que creara el manipulador Procedure of this Evento Vacío, listo párr servicio Codificado. 
Ver Figura 142. Lo Que vamos a HACER una continuacion es muy sencillo, ya Que al tratarse del Cierre del Formulario, llamaremos al Método Close () del Mismo, utilizando la Palabra Clave Me, párr Indicar Que ESTAMOS Haciendo Referencia al proprio Objeto desde el interior del Código de Clase do. El USO de Mí En Esta situación realizada es opcional, ya Que No Necesario seria, Pero proporciona Más CODIGO ONU legible. Veamos this manipulador de Evento en el Código fuente 385.
Figura 142. Procedure manipulador del evento ¿Haga clic de botón de control de la ONU.

Button

Propiedades destacaremos Las Siguientes.
• Texto. Cadena Con El título del Button. 
• TextAlign. Alineacion o Disposición del título Dentro del área del Button; defecto por aparece Centrado. 
• BackColor. Color de Fondo para El Botón. 
• Cursor. Permite Modificar el cursor del Ratón Que Por Defecto Tiene El Botón. 
• Imagen. Podemos Imagen de Que mostrar en El Botón de Como complemento a título do, o bien, en el Caso de Que No asignemos ONU Texto al Button, nos permitira describir do funcionalidad. 
• FlatStyle. Tipo de resaltado párr El Botón. Por Defecto, El Botón aparece ONU de la estafa aliviar Cierto, pulsado Que al ser, proporciona el efecto de hundirse y Recuperar NuevaMente do Estado, Pero Podemos, Propiedad this Mediante, Que HACER El Botón sí muestre en Modo plano, ONU de la estafa ligero remarcado al pulsarse , etc 
• Font. Cambia el Tipo de letra y TODAS las Características del Elegido pisos, párrafo el Texto del Button 

Abriendo la ventana Cuadro de Herramientas, insertaremos el control de la ONU de Este Tipo, al Que daremos el Nombre btnSalir, Y Que utilizaremos para cerrar el Formulario finalizando el Programa. La Figura 141 Muestra la ubicación realizada el control of this Dentro de la Superficie del Formulario.
Figura 141. Botón de control insertado en el: Diseñador del Formulario.

Otros controles básicos

Al abrir el cuadro de herramientas podemos observar que el conjunto de controles disponibles es muy numeroso, lo que nos permite crear nuestro interfaz de usuario Windows de un modo rápido y sencillo, dotándole de un nutrido conjunto de funcionalidades. 
Tras la primera toma de contacto con los formularios realizada en los anteriores apartados, vamos seguidamente, a desarrollar un ejemplo que nos permita ilustrar el diseño y codificación de los controles más característicos que podemos utilizar en un formulario 
Para ello, crearemos un nuevo proyecto de tipo Windows al que daremos el nombre de Encuesta (hacer clic aquí para acceder a este ejemplo), y en él diseñaremos un formulario para que un hipotético comercio pueda realizar una encuesta a sus clientes, que después grabe en un archivo de datos para su posterior estudio. Por lo que una vez situados ante el diseñador vacío del formulario, empezaremos a proporcionarle funcionalidad a través de los controles descritos en los siguientes apartados.

Iniciar el formulario desde Main( ) - II

Despues añadimos sin módulo al Proyecto, empleando la Opción de menú Proyecto + módulo para ponerte en contacto, de VS.NET, y en DICHO módulo codificamos Procedure ONU Principal () Que se encargue de instanciar la ONU Objeto del Formulario. Si escribimos un algoritmo PARECIDO Muestra Que he aquí el Código fuente 383, el Programa, en efecto, sí iniciará y creara el Formulario, Pero INMEDIATAMENTE lo cerrará

Módulo de Entrada
Public Sub Main ()
'Instanciar ONU Objeto de la Clase del Formulario
Dim frmVentana Como Nuevo frmPrueba ()
frmVentana.Text = "probando from Código"
frmVentana.Show ()
End Sub
End Module
Código fuente 383
El anterior Código, aunque válido, sin Problema Tiene: Formulario de la ONU, al tratarse De Una ventana de Windows, lo NECESITA Que se denominador ONU Bucle De Proceso de Mensajes, Que le permita DETECTAR los MENSAJES Que le Envia el Sistema Operativo, y ACTUAR en Consecuencia . En. NET, sin conseguir párr Que Formulario disponga de la ONU Bucle de Mensajes, debemos utilizar la Aplicación del clase, Entre Cuyos Miembros Compartidos, SE ENCUENTRA EL METODO Run (). De Cuando un Método DICHO, le Pasemos ONU Objeto Formulario de como Parámetro, creara sin bucle de Mensajes párr DICHO Formulario y lo mantendra en ejecución resuelve Hasta Que el usuario de la Aplicación lo Cierre. Pues Modificando, el Código anterior, POR EL mostrado en el Código fuente 384, conseguiremos Que el Formulario permanezca en ejecución resuelve Una Vez Puntos Creado.

Módulo de Entrada
Public Sub Main ()
'Instanciar ONU Objeto de la Clase del Formulario
Dim frmVentana Como Nuevo frmPrueba ()
frmVentana.Text = "probando from Código"
'Utilizamos el Objeto Aplicación y Do
'Método de ejecución () crear PARA UN bucle de
'MENSAJES párrafo el Formulario y
'Ponerlo en ejecución celebra
Application.Run (frmVentana)
End Sub
End Module
Código fuente 384

Iniciar el formulario desde Main( ) - I

En Todos Los ejemplos estafa Formularios de Windows REALIZADOS Hasta El Momento, la application Comienza do directly ejecución deberían tramitar Por El Formulario, lo Cual RESULTA Una COMODIDAD, ya Que No TENEMOS Que preocuparnos de Configurar El Arranque del Programa, un no servicio Que Cambiemos el Nombre del Formulario , Como: hemos de Visto baño LOS ULTIMOS Apartados. A Pesar de Todo, Este Es Escenario un, Que en los muchas OCASIONES no válido sueros, Puesto Que necesitaremos realizar Alguna tarea los antes de la Visualizacion del Formulario, COMO change ciertas Propiedades del Mismo. 
Podemos CREAR UN Procedure Principal (), busque en la ONU módulo o En Una Clase, y configurarlo de Como punto de entrada ¿de la Aplicación, codificando en DICHO Procedure la instanciación del Formulario a mostrar. A continuacion describimos 
Los Pasos necesarios Partiendo del Hecho de Que ya TENEMOS UN Proyecto de Windows Sistema de Puntos Creado, el Correspondiente un Hola Mundo, volveremos a abrir la ventana de Propiedades de DICHO Proyecto y cambiaremos el Objeto inical un Sub Main. Ver Figura 140.

Figura 140. Configurar las Naciones Unidas Proyecto de Windows párr porción Comenzar sin Procedure Principal ().

Cambiando el nombre del formulario

Cambie el Nombre de la ONU Formulario es tan sencillo Algoritmo: Diseñador de Como Acceder a la ventana de Propiedades de su, y asignar Un Nuevo Nombre en la Propiedad Nombre. EJEMPLO Por, asignemos frmPrueba Como Nuevo Nombre al Formulario de nuestra EJEMPLO. Ver Figura 138.
Figura 138. Cambio del Nombre del Formulario.
Sin embargo, esta Acción Tiene MAS implicaciones de Las Que En Un Principio Pudiera Parecer, ya Que Si intentamos Ahora ejecutar el Programa, Sí se producira sin error. Esto Es Una cola debido al CREAR el Proyecto, el Objeto inical del Mismo era el Formulario, Pero tenia COMO Nombre Form1; al interruptor para el Nombre de la ONU frmPrueba, el IDE no Florerias encontrarlo y géneros el error.Para solucionarlo, debemos abrir la ventana de Propiedades del Proyecto, seleccione y, en la Lista desplegable Objeto inical, el Nombre del nuevo Formulario: frmPrueba. Ver Figura 139.
Figura 139. Cambio del Objeto Inicial del Proyecto.
Al volver a ejecutar, el Programa funcionará correctamente mostrando el Formulario. Un detalle a destacar coinci En que CUANDO Cambiamos el Nombre del Formulario, el archivo Que Contiene el Código fuente del Mismo no Cambia, ya Que de Como sabemos, sin archivo de Código Florerias albergar Más De Una Clase o Cualquier Otro Tipo de Elemento de la Aplicación : Enumeración, módulo, Estructura, etc Por ESE Motivo, contains Que el archivo el Formulario seguira Con El Nombre Form1.vb, INDEPENDIENTEMENTE del Nombre Que le hayamos friso al Formulario.

El código del formulario - II

Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Friend WithEvents Label1 As System.Windows.Forms.Label
'Required by the Windows Form Designer
Private components As System.ComponentModel.Container
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'Label1
'
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 20.25!,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,
Byte))
Me.Label1.Location = New System.Drawing.Point(37, 38)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(168, 44)
Me.Label1.TabIndex = 0
Me.Label1.Text = "Hola Mundo"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(244, 163)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Label1})
Me.Location = New System.Drawing.Point(100, 100)
Me.Name = "Form1"
Me.StartPosition = System.Windows.Forms.FormStartPosition.Manual
Me.Text = "Programa de prueba"
Me.ResumeLayout(False)
End Sub
#End Region
End Class
Código fuente 382

El código del formulario - I

Cuando creamos un formulario desde Visual Studio .NET del modo en que acabamos de mostrar, el diseñador del formulario genera por nosotros el código del formulario, que consiste en una clase que hereda de la clase base Form. 
El nombre de la clase es el mismo que hemos asignado a la propiedad Name en la ventana de propiedades del diseñador, en este caso Form1. El código es grabado en un archivo con la extensión .VB, que tiene el nombre del formulario: FORM1.VB, en este ejemplo. 
Para ver dicho código, tan sólo tenemos que hacer clic derecho sobre el formulario, y en el menú contextual seleccionar Ver código, lo que abrirá la ventana del editor de código del IDE, mostrando el código de nuestro formulario. Parte del código estará oculto por un elemento Region con el nombre Windows Form Designer generated code; para verlo al completo debemos hacer clic en el icono de expansión de esta región. 
Es posible modificar este código generado por el diseñador, para completar aquellos aspectos que necesitemos del formulario. Sin embargo, no debemos modificar el método InitializeComponent( ), ya que se trata de un método directamente relacionado con el aspecto visual del formulario, y su edición podría dejar el formulario inservible. 
El Código fuente 382 muestra el código de la clase Form1, correspondiente al formulario de nuestro proyecto, que ha generado el diseñador.

Ejecutando la aplicación

En Este punto del Desarrollo, daremos porción concluída la application. Ahora debemos ejecutarla párr comprobar Que TODO Funciona correctamente. El Modo de ejecución celebra desde el IDE es Igual Que el párrafo Seguido Una Aplicación De consuelo. La Figura 137 Muestra el Resultado.
Figura 137. La Aplicación Hola Mundo, párr Formulario de Windows, en ejecución resuelve.
Podemos Formulario Este manipularlo de forma Igual Que Cualquier Otro de Los Que existan en el Sistema: redimensionarlo, maximizarlo, minimizarlo, etc Como Ventaja añadida, observe el lector Que CREAR párr Este Programa no: hemos necesitado ESCRIBIR Ni Una sola línea de Código, TODO ha Sido Realizado un Través de los Diseñadores y demás La Elementos del IDE.

Label

Un control Label o Etiqueta es un control estático. Eso quiere decir que no realiza ninguna interacción con el usuario, puesto que sólo muestra un texto informativo. Dibujaremos sobre el formulario un control de este tipo del modo descrito anteriormente, al que el diseñador le asignará el nombre Label1.
A continuación, con el control seleccionado, pasaremos a la ventana de propiedades. En la propiedad Text escribiremos Hola Mundo, lo cual se reflejará también en el control dentro del diseñador de formularios. Ver Figura 134.
Ya que el tamaño de Label1 con respecto al formulario es insignificante, aumentaremos dicho tamaño haciendo clic sobre el control; esto mostrará alrededor del mismo una serie de recuadros o guías de redimensión. Haciendo clic sobre cualquiera de ellas y arrastrando el ratón, variaremos el tamaño del Label hasta conseguir uno más adecuado. 
También podemos hacer clic sobre el control y arrastrarlo, cambiando la posición en la que lo habíamos dibujado originalmente.
Ahora debemos cambiar el tamaño del tipo de letra, y para ello emplearemos la propiedad Font o Fuente del control. Pasaremos pues a la ventana de propiedades, observando como esta propiedad muestra en su valor el nombre del fuente actual. Ver Figura 135.
Haciendo clic sobre Font, aparecerá un botón con puntos suspensivos, que al ser pulsado, abrirá el cuadro de diálogo estándar del sistema para selección de tipos de letra. Ver Figura 136 Cambiando el tamaño del tipo de letra a 20 y pulsando Aceptar, aumentará la letra del Label que tenemos en el formulario.
Figura 136. Selección del tipo de fuente para un control del formulario.

Controles

Los controles constituyen aquellos elementos que insertamos dentro de un formulario, y permiten al mismo interactuar con el usuario, tales como botones de pulsación, cajas de texto, casillas de verificación, cajas con listas de valores, etc.; al igual que un formulario, son objetos con sus propiedades y métodos, y se manejan de la misma forma. Para añadir un control a un formulario, en primer lugar seleccionaremos la opción de menú Ver + Cuadro de herramientas, que abrirá la ventana que contiene los controles que podemos insertar en el formulario. Ver la Figura 133.
Figura 133. Cuadro de herramientas de VB.NET.
Para añadir un control a un formulario haremos clic en el icono del control, arrastrando y dibujando el mismo sobre la superficie del diseñador del formulario, hasta dar el tamaño requerido.

Formularios - II

Para asignar valores a las propiedades a través de esta ventana, simplemente haremos clic sobre la propiedad que necesitemos, escribiendo su valor en la columna derecha. La primera propiedad a mencionar, y la más importante para cualquier objeto es Name, que contiene el nombre del objeto que luego nos va a permitir manipularlo en el código del programa. El diseñador asigna nombres por defecto a los formularios y controles que agreguemos a la aplicación. 
En este caso, el nombre que ha asignado al formulario es Form1. Podemos modificar estos nombres por otros que sean más significativos para el programador, aunque de momento vamos a mantener los nombres por defecto. Otra de las propiedades más comunes es Text, que en el caso del formulario nos permite asignar una cadena con el título para el mismo. En lo que respecta al diseñador del formulario, podemos modificar su tamaño haciendo clic sobre las guías de redimensión que tiene en los bordes de la plantilla de diseño, y arrastrando hasta dar el tamaño deseado. Las guías de color blanco son las que permiten modificar el tamaño, mientras que las de color gris, son fijas. Por ejemplo, si vamos a incluir muchos controles, o un título largo, y el tamaño que tiene por defecto no es lo bastante grande, lo ampliaremos hasta quedar como muestra la Figura 132.
Figura 132. Guías de redimensión del diseñador de formularios.
También podemos conseguir el efecto de cambio en el tamaño del formulario desde la ventana de propiedades del IDE, asignando valores a la propiedad Size. Para ello, haremos clic en el icono de expansión de esta propiedad y daremos valores a sus elementos X e Y. Igualmente haremos con la propiedad Location, de modo que cambiaremos las coordenadas iniciales en las que el formulario será visualizado. Para que el formulario se visualice en estas coordenadas que establecemos manualmente, debemos también asignar a la propiedad StartPosition el valor Manual.

Formularios - I

Un proyecto de tipo Windows contiene por defecto un formulario, cuyo diseñador podemos ver en una de las pestañas de la ventana principal del IDE, como vemos en la Figura 130. Un formulario es, al igual que la gran mayoría de elementos en el entorno de .NET, un objeto, y como tal, la forma de manipularlo pasa por asignar y obtener valores de sus propiedades, y por la ejecución de sus métodos. Para acceder a las propiedades de un formulario en modo de diseño, seleccionaremos la opción de menú del IDE Ver + Ventana Propiedades, que nos mostrará la ventana de la Figura 131.

Figura 130. Diseñador de formulario de VS.NET.
Figura 131. Ventana Propiedades de VS.NET, mostrando las propiedades de un formulario.

Hola Mundo desde un formulario Windows

Comenzaremos nuestro periplo por los formularios, creando la versión Windows del clásico programa Hola Mundo. Esto nos permitirá realizar una primera toma de contacto con el diseñador de formularios del IDE, la ventana de propiedades del mismo, y los controles, que nos permitirán proporcionar funcionalidad añadida al formulario. Iniciaremos por lo tanto Visual Studio .NET, y crearemos un nuevo proyecto de tipo Visual Basic, con plantilla Aplicación para Windows, al que daremos el nombre HolaMundoWin, como se muestra en la Figura 129

Figura 129. Creación en VB.NET de un proyecto de tipo Aplicación para Windows.

System.Windows.Forms

Este espacio de nombres contiene todos los tipos del entorno: clases, estructuras, enumeraciones, interfaces, etc., a través de los cuales podremos desarrollar aplicaciones compuestas por formularios Windows, junto a los correspondientes controles que permiten al usuario la interacción con el programa. La clase Form es la principal de este espacio de nombres, y representa a una ventana Windows de una aplicación

Formularios Windows

Interfaces de ventana. Formularios y controles 

Un formulario Windows representa la conocida ventana, que se utiliza en las aplicaciones ejecutadas bajo alguno de los sistemas operativos de la familia Windows: Windows95/98, NT, ME, 2000, XP, etc. Un control, por otra parte, es aquel elemento situado dentro de una ventana o formulario, y que permite al usuario de la aplicación Windows, interactuar con la misma, para introducir datos o recuperar información. Dentro de .NET, las ventanas clásicas Windows, reciben la denominación de Windows Forms, o WinForms. En este texto nos referiremos a ellas como formularios Windows, o simplemente, formularios.

La clase Path

Esta clase nos proporciona un conjunto de campos y métodos compartidos, para la obtención de información y manipulación de rutas de archivos. El Código fuente 381 muestra un ejemplo en el que, una vez introducido un directorio, se muestra la información de cada uno de sus archivos, en lo que respecta a los métodos de esta clase.

Console.WriteLine("Introducir nombre de directorio")
Dim sDirectorio As String
sDirectorio = Console.ReadLine()
Dim sArchivos() As String
sArchivos = Directory.GetFiles(sDirectorio)
Console.WriteLine("Datos sobre archivos obtenidos del objeto Path")
Console.WriteLine("==============================================")
Dim sArchivo As String
For Each sArchivo In sArchivos
Console.WriteLine("GetDirectoryName() {0}", Path.GetDirectoryName(sArchivo))
Console.WriteLine("GetExtension() {0}", Path.GetExtension(sArchivo))
Console.WriteLine("GetFileName() {0}", Path.GetFileName(sArchivo))
Console.WriteLine("GetFileNameWithoutExtension() {0}",
Path.GetFileNameWithoutExtension(sArchivo))
Console.WriteLine("GetFullPath() {0}", Path.GetFullPath(sArchivo))
Console.WriteLine()
Next
Console.ReadLine()
Código fuente 381

Manipulación de directorios mediante las clases Directory y DirectoryInfo - III

En el siguiente ejemplo, el método GetDirectories( ) devuelve un array de cadenas, con los nombres de los subdirectorios que se encuentran dentro del directorio pasado como parámetro a este método. A continuación, mediante el método Move( ), cambiamos de lugar un directorio; con Delete( ) borramos otro de los directorios. Observe el lector, cómo utilizando de forma combinada CType( ), Directory.GetFiles( ), y un elemento del array que contiene la lista de directorios, creamos una expresión que nos permite averiguar, si en un determinado directorio hay o no archivos. 

Ver el Código fuente 380.

Dim sNombreDir As String
Dim oDirInfo As DirectoryInfo
Dim sDirectorios() As String
Dim sDirectorio As String
Console.WriteLine("Introducir un nombre de directorio")
sNombreDir = Console.ReadLine()
' obtener directorios del directorio especificado
= Directory.GetDirectories(sNombreDir)
' comprobar que el directorio contiene a su vez
' varios directorios; en caso negativo, finalizar
If Not (sDirectorios.Length > 1) Then
Console.WriteLine("El directorio especificado debe contener al menos dos
subdirectorios")
Console.ReadLine()
Exit Sub
End If
' mostrar nombres de directorios
For Each sDirectorio In sDirectorios
Console.WriteLine(sDirectorio)
Next
' mover uno de los directorios a otra ubicación del disco actual
Directory.Move(sDirectorios(0), "\temp\BIS")
' borrar otro de los directorios;
' el directorio a borrar debe estar vacío;
' comprobar con la siguiente expresión si dicho
' directorio contiene o no archivos
If (CType(Directory.GetFiles(sDirectorios(1)), String()).Length() > 0) Then
Console.WriteLine("No se puede borrar el directorio: {0} - " & _
"contiene archivos", sDirectorios(1))
Else
Directory.Delete(sDirectorios(1))
End If
Console.WriteLine("Completado")
Console.ReadLine()
Código fuente 380

Manipulación de directorios mediante las clases Directory y DirectoryInfo - II

Para obtener el directorio actual de ejecución, disponemos del método GetCurrentDirectory( ), mientras que si queremos subir al directorio de nivel superior, tenemos el método GetParent( ), que devuelve un tipo DirectoryInfo, con el que podemos, por ejemplo, mostrar su nombre completo mediante la propiedad FullName, y fecha de creación con CreationTime. Veamos el Código fuente 379.

Dim sNombreDir As String
Dim oDirInfo As DirectoryInfo
' obtenemos el directorio actual de ejecución
sNombreDir = Directory.GetCurrentDirectory()
Console.WriteLine("Directorio actual: {0}", sNombreDir)
' obtenemos el directorio padre del actual,
' y mostramos información de dicha directorio
oDirInfo = Directory.GetParent(sNombreDir)
Console.WriteLine("Directorio padre y fecha de creación {0}{1}{2}{3}", _
ControlChars.CrLf, oDirInfo.FullName, _
ControlChars.CrLf, oDirInfo.CreationTime)
Código fuente 379