Está en la página 1de 135

Fundamentos de Interaccin

P
Persona-Ordenador
O d
d

7. Diseo de una aplicacin


Windows Forms en VB.NET

Lus Rodrguez Baena (luis.rodriguez@upsam.net)


Universidad Pontificia de Salamanca (campus Madrid)
Escuela Superior de Ingeniera y Arquitectura

Programacin en Windows
Programacin
g
convencional (lineal)
(
)
Acciones previsibles e independientes del entorno donde se
ejecutan.
Opciones de usuario limitadas a las posibilidades que el
programador dicte.
9 El control de las opciones se hace por medio de bucles y estructuras
selectivas.

No adecuada para entornos grficos o multitarea.


9 El nmero de eventos disponibles es demasiado grande para poder
controlarlos todos.
9 La eleccin de orden del proceso de eventos es compleja.
9 La estructura de un programa lineal no facilita la espera a que se
produzcan los eventos.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Programacin en Windows (II)


Conceptos clave en la programacin en Windows.
Ventanas.
9 Regin de la pantalla.
o Ventanas de documentos, botones, listas desplegables, cuadros de dilogo.

9 El SO administra todas las ventanas asignndolas un identificador.


identificador

Eventos.
9 Accin que se ejecuta sobre el sistema.
9 El sistema operativo rastrea continuamente las ventanas en busca de
sucesos.

Mensajes.
9 Cuando se produce un evento se enva un mensaje al sistema
operativo.
operativo
9 El mensaje guarda informacin sobre el suceso y la ventana que lo ha
producido.
9 El sistema operativo lo registra y almacena en una cola de mensajes.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Programacin en Windows (III)


Programacin orientada a eventos
El entorno (sistema operativo, usuario, etc.) puede actuar sobre el
programa en cualquier momento.
El programa debe responder a las acciones del entorno no
proporcionadas de forma lineal.
lineal
No se debe prever un desarrollo lineal del flujo del programa.
9 Las distintas acciones se activan como respuesta a sucesos que ocurren en
el entorno.

Al ejecutarse
j
t
una aplicacin
li i basada
b
d en eventos
t
9 Windows rastrea las ventanas.
9 Si se detecta un evento en alguna ventana manda un mensaje al sistema
operativo y lo almacena en la cola de mensajes
9 El sistema operativo lo procesa y lo transmite a las dems ventanas,
indicando el evento y el identificador de la ventana que lo produce
(Handle).
9 La aplicacin busca el controlador de eventos asociado a ese evento en el
control
t l y, sii existe,
i t ejecuta
j
t ell cdigo
di correspondiente.
di t
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Programacin en Windows (IV)

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Programacin en Windows (V)


Estructura de un p
procedimiento de evento.
Cada componente de Windows Forms tiene asociado una serie
de eventos a los que responde.
9 Los controladores de eventos tienen dos argumentos:
o Sender, de tipo Object y tiene una referencia al objeto que lo ha
producido.
o e, un objeto de la clase EventArgs o alguna de sus derivadas con
i f
informacin
i del
d l evento.
t

9 El nombre corresponde con el nombre del control.


9 La clusula Handles indica que mtodos de eventos estn
asociados al procedimiento
procedimiento.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Programacin en Windows (VI)


Private Sub MiEvento(ByVal sender As System.Object, _
B V l e As
ByVal
A System.EventArgs)
S t
E
tA
) _
Handles MiBotn.Click, MiBotn.Leave, OtroBotn.Click
MessageBox.Show("Se ha pulsado MiBotn, se ha pulsado OtroBotn " & _
"o MiBotn a perdido el foco")
If sender Is MiBotn Then
MessageBox.Show("Se ha pulsado MiBotn o MiBotn ha perdido el foco")
Else
MessageBox.Show("Se ha pulsado OtroBotn")
End If
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Programacin en Windows (VII)


La instruccin AddHandler, permite asociar un evento a un controlador de
eventos determinado, distinto del procedimiento de evento predeterminado.
Esto permite activar y desactivar los eventos a voluntad.
AddHandler NombreObjeto.NombreEvento, AddressOf NombreControladorDeEventos
AddHandler MiBotn.Click, AddressOf MiEvento
AddHandler MiBotn
MiBotn.Leave,
Leave AddressOf MiEvento
AddHandler OtroBotn.Click, AddressOf MiEvento

Private Sub MiEvento(ByVal sender As Object, _


ByVal e As EventArgs) 'No lleva clasula Handles
MessageBox.Show("Se
g
(
ha p
pulsado MiBotn " & _
"u OtroBotn " & _
"o MiBotn ha perdido el foco")
If sender Is MiBotn Then
MessageBox.Show("Se ha pulsado MiBotn " & _
"o mi botn ha perdido el foco")
Else
MessageBox.Show("Se ha pulsado OtroBotn")
End If
End Sub

La instruccin RemoveHandler,
RemoveHandler permite desactivar un controlador de eventos
eventos.
RemoveHandler NombreObjeto.NombreEvento, AddressOf NombreControladorDeEventos
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Aplicaciones Windows Forms


Se desarrolla alrededor de uno o ms formularios.
Generacin automtica de cdigo.
Visual Studio genera cdigo en tres sitios distintos:
9 Archivo Application.Designer.vb.
o Uno por proyecto
o Est dentro del directorio My Proyect del proyecto.
o Incluye las caractersticas generales de la aplicacin y formulario o mdulo de
arranque.

9 Archivo FormX.Designer.vb.
o
o
o
o

Uno por formulario.


Dentro del directorio de proyecto.
Implementacin parcial de la clase Form.
Incluye
y el cdigo
g necesario para
p
crear y destruir los controles que
q se incluyan
y en
el formulario.

9 Archivo FormX.vb.
o Clase FormX con la declaracin del resto de la clase.
o Incluye el cdigo de usuario para manejar la aplicacin

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Tareas comunes: texto


Propiedad Text.

E
Establece
t bl
u obtiene
bti
ell texto
t t asociado
i d all control.
t l
Presente en todos los controles que tienen texto esttico o editable.
En texto esttico, el carcter & se utiliza para determinar la tecla de
acceso.

Propiedad TextAlign.

Alineacin del texto


Presente en los controles Label, TextBox, Button, CheckBox,
RadioButton NumericUpDown y DomainUpDown.
RadioButton,
DomainUpDown
Para los controles Label, Button, CheckBox y RadioButton puede
tomar alguno de los valores de la enumeracin ContentAligment.
9 BottomCenter, BottomLeft, BottomRight, MiddleCenter,
MiddleLeft,, MiddleRight,
g , TopCenter
p
, TopLeft,
p
, TopRight.
p g

Para el resto puede tomar alguno de los valores de la enumeracin


HorizontalAligment.
9 Center, Left, Right.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

10

10

Tareas comunes: color


Propiedades ForeColor y BackColor.
Establece u obtienen el color de primer plano y el color de fondo.
Su valor es un dato de la estructura System.Drawing.Color.

Miembros de la estructura Color.

Mtodo esttico Color.FromArgb(rojo, verde, azul).


Mtodo esttico Color.FromKnownColor(nombreColorConocido).
(
).
Mtodo esttico Color.FromName(cadena)
Propiedades R, G, B.
MiBotn.BackColor = Color.FromArgb(0, 0, 255) 'Color de fondo azul
Me.BackColor = Color.FromKnownColor(KnownColor.Yellow) Amarillo
OtroBotn.BackColor = Color.FromName("Green") 'Color de fondo verde
Dim c As System.Drawing.Color = MiBotn.BackColor
MessageBox.Show(c.R & "-" & c.G & "-" & c.B) 'Devuelve 0-0-255

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

11

11

Tareas comunes: fuentes


Propiedad Font.

Hace referencia a un objeto System.Drawing.Font.


S stem Dra ing Font
En tiempo de ejecucin la modificacin de las caractersticas de la fuente implica la creacin
de una nueva instancia de la clase.
'Para cambiar el estilo de la fuente a negrita
MiBotn.Font.Bold
Font Bold = True no es vlido
'MiBotn
MiBotn.Font = New Font(MiBotn.Font, FontStyle.Bold)

Las fuentes de los componentes de un objeto contenedor, toman las caractersticas de los
objetos contenidos.

Propiedades del objeto Font


Propiedad

Descripcin

Valores

Bold

Obtiene un valor que indica si el objeto Font est en negrita

True o False

Italic

Obtiene un valor que indica si el objeto Font est en cursiva

True o False

Name

Obtiene una representacin del tipo de letra del objeto Font

Cadena

Size

Obtiene el tamao del objeto Font

Real de simple precisin

Strikeout

Otiene un valor que indica si el objeto Font est tachado

True o False

Underline

Otiene un valor que indica si el objeto Font est subrayado

True o False

Unit

Obtiene la unidad de medida del objeto Font

Un miembro de GraphicsUnit (Inch, Millimeter, Point,)

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

12

12

Tareas comunes: tamao y posicin


Propiedad
p
Location.
Hace referencia a una estructura de tipo
System.Drawing.Point que identifica la posicin de la
esquina
qu a superior
up o izquierda
qu da del
d componente.
o po
Estructura Point.
9 Constructor: Point(X,Y).
9 Propiedades X e Y.

Se puede establecer en tiempo de diseo (ventana de


propiedades) o de ejecucin.
9 Ejemplo:
'Pone el botn en la esquina superior izquierda del formulario
OtroBotn.Location = New Point(0,0)

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

13

13

Tareas comunes:
tamao
ta
a o y pos
posicin
c (II)
( )
Propiedad
p
Size.
Hace referencia a una estructura System.Drawing.Size.
9 Constructor: Size(ancho,alto).
9 Miembros Width y Height.
OtroBotn.Size = New Size(100, 50)
MiBotn.Size = OtroBotn.Size

Mtodo SetBounds().
SetBounds()
Establece la posicin y el tamao de un componente.
control.SetBounds(x,y,ancho,alto)
Iguala el tamao de OtroBotn a MiBotn y lo coloca en la posicin 0,0
OtroBotn.SetBounds(0, 0, MiBotn.Size.Width, MiBotn.Size.Height)
Iguala el tamao del formulario al de la pantalla
Me.SetBounds(0, 0, Screen.PrimaryScreen.WorkingArea.Width, _
Screen PrimaryScreen WorkingArea Height)
Screen.PrimaryScreen.WorkingArea.Height)

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

14

14

Tareas comunes:
tamao
ta
a o y pos
posicin
c (III)
(
)
Propiedad
p
Bounds.
Hace referencia a una estructura de tipo
System.Drawing.Rectangle.
9 Propiedades X, Y, Width y Height.
OtroBotn.Bounds = MiBotn.Bounds 'Pone a OtroBotn encima de MiBotn

Propiedad ClientSize.
D
Devuelve
l un objeto
bj t Size
i
con ell ttamao
d
dell rea

cliente
li t del
d l
control.

Propiedad ClientRectangle.
Devuelve un objeto Rectangle con el rectngulo del rea
cliente del control.
OtroBotn.Bounds=New Rectangle(0,0,Me.ClientSize.Width,Me.ClientSize.Height)
OtroBotn.Bounds

d = Me.ClientRectangle
li
l
Hace l
lo mismo
i
que l
lo anterior
i

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

15

15

Tareas comunes:
tamao
ta
a o y pos
posicin
c (IV)
( )
Propiedad

Descripcin

Valores

Location

Obtiene o establece el punto superior izquierdo del control

Una estructura Point

Size

Obtiene o establece el tamao del control

Una estructura Size

Left, Top, Width, Height

Coordenadas individuales del control (obsoletas)

Un valor entero

Right

Coordenada X del borde derecho

Un valor entero

Bottom

Coordenada Y del borde inferior

Un valor entero

Bounds

Establece u obtiene el rectngulo que identifica la posicin y el tamao del


control

Una estructura Rectangle

ClientRectangle

El rectngulo del rea cliente del control

Una estructura Rectangle

ClientSize

Dimensiones del rea cliente del control

Una estructura Size

Anchor

Distancia desde el borde del contenedor al control


(ver tutorial del entorno)

Un miembro de la enumeracin
AnchorStyles

Dock

Establece que bordes del control se encuentran acoplados a su contenedor

Un miembro de la enumeracin
DockStyles

Mtodo

Descripcin

Devuelve

BringToFront

Trae el objeto a primer plano

SendToBack

Lleva el objeto al fondo

SetBounds(X,Y,ancho,
alto)

Define el rectngulo que define la posicin y tamao del control

SetSize(ancho, alto)

Define el tamao que define un control

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

16

16

Tareas comunes: manejo del teclado


Eventos KeyPress, KeyDown y KeyUp.
Se ejecutan en el siguiente orden:
9 KeyDown
9 KeyPress
9 KeyUp.

Evento KeyPress.
control_KeyPress(sender As Object, e As KeyPressEventArgs)

sender es una referencia al objeto que ha enviado el evento.


e es una referencia a un objeto de la clase
System.Windows.Forms.KeyPressEventArgs.
9 Miembros de KeyPressEventArgs:
o KeyChar, representa el carcter que se ha pulsado.
o Handled, un valor lgico. Si se pone a True, indica que el evento se
procesado y no hayy que
q hacer nada ms.
ha p

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

17

17

Tareas comunes:
manejo
a ejo del
de tec
teclado
ado (II)
( )
Private Sub TextBox1_KeyPress(ByVal
y
( y
sender As Object,
j
, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress
'Procesa slo las teclas numricas y las teclas de control
If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then
El motor ignora la tecla
'El
e.Handled = True
End If
End Sub
Private Sub TextBox2
TextBox2_KeyPress(ByVal
KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox2.KeyPress
'Convierte los caracteres alfabticos a maysculas
If Char.IsLetter(e.KeyChar) Then
La propiedad SelectedText devuelve el texto seleccionado
'La
'Puede ser una cadena nula si no hay seleccionado ningn texto
'En ese caso ser una cadena nula situada en la posicin del cursor
TextBox2.SelectedText = Char.ToUpper(e.KeyChar)
e.Handled = True
End If
End Sub
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

18

18

Tareas comunes:
manejo
a ejo de
del tec
teclado
ado (III)
(
)
Eventos KeyUp
y p y KeyDown.
y
Permiten detectar las teclas especiales mediante el argumento e
de la clase KeyEventArgs.
9 Miembros de KeyEventArgs:
o Handled.
o Alt, Control, Shift.
o KeyCode. Contiene el cdigo de la tecla pulsada, un dato la
enumeracin
Keys (Keys.A..Keys.Z, Keys.D0..Keys.D9,
Keys.F1..Keys.F2, etc.).
Private Sub TextBox2_KeyDown(ByVal sender As Object, _
ByVal
y
e As System.Windows.Forms.KeyEventArgs)
y
y
g ) _
Handles TextBox2.KeyDown
'Detecta si se ha pulsado la tecla Shift+F1
If e.Shift And e.KeyCode = Keys.F1 Then
MsgBox("Se ha pulsado Shift+F1")
End If
End Sub
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

19

19

Tareas comunes: manejo del ratn


Pulsacin de teclas:
Eventos Click, DoubleClick, MouseUp, MouseDown y
MouseWheel.

Movimiento del ratn.


Eventos MouseMove, MouseEnter, MouseLeave y
MouseHover.

Orden de procesamiento de eventos:


1. MouseEnter.
2. MouseMove.
3 MouseHover/MouseDown
3.
MouseHover/MouseDown-ClickClick
DoubleClick/MouseWheel.
4. MouseUp.
5. MouseLeave.
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

20

20

Tareas comunes:
manejo
a ejo de
del ratn
at (II)
( )
MouseMove, MouseDown, MouseWheel y MouseUp reciben un
argumento de la clase MouseEventArgs.
Miembros de MouseEventArgs.

Miembros de MouseEventArgs
Propiedad

Descripcin

Valores

Button

Obtiene el botn del ratn que se presion


presion.

Un miembro de la enumeracin MouseButtons


(Left, Middle, None, Rigth, XButton1 o XButton2)

Clicks

Obtiene el nmero de veces que el botn del ratn se


presion y se solt.

Un entero con el nmero de veces que se puls y


solt el botn

Delta

g q
que indica el nmero de
Obtiene un recuento con signo
pasos de trinquete que ha girado la rueda del ratn. Un
paso de trinquete es una muesca de la rueda del ratn.

Entero

Obtiene la coordenada x del ratn.

Entero

Obtiene la coordenada y del ratn.

Entero

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

21

21

Tareas comunes: control del foco de


e t ada
entrada
Propiedad

Descripcin

Valores

Enabled

Obtiene o establece el estado de activado o desactivado del control

Lgico

TabStop

Determina si el control va a entrar en el orden de tabulacin

Lgico

TabIndex

Determina el orden en que el control va a entrar en el orden de tabulacin

Entero

Visible

Obtiene o establece si un control es visible

Lgico

CausesValidation

Determina si un control va a provocar un evento de validacin

Lgico

CanFocus

Determina si un control puede tomar el foco de entrada (si Visible y Enabled estn a True)

Lgico

Focused

Determina si un control tiene el foco

Lgico

Mtodo

Descripcin

Valores devueltos

Focus()

Da el foco a un control. Su uso es obligatorio en controles que


no se pueden seleccionar (Panel, GroupBox, PictureBox,
ProgressBar, Splitter, Label, LinkLabel cuando no hay ningn
enlace).

Lgico (True si se ha
podido seleccionar el
control o false en
caso contrario)

GetNextFocus(control, adelante)

Obtiene el siguiente o anterior control en el orden de tabulacin


(si adelante es True, obtiene el siguiente)

Control

Select()

Establece el foco en un control. No se puede utilizar en


controles que no se pueden seleccionar. En el resto es igual a
Focus().

Ninguno

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

22

22

Tareas comunes: control del foco de


entrada (II)
( )
Cuando un control entra en foco se producen los siguientes
eventos:
1.
2.
3.
4.
5.
6.
Private

Enter.
GotFocus.
Leave.
Validating.
Validated.
LostFocus.
Sub TextBox3_Validating(ByVal

sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles TextBox3.Validating
'Slo permite dejar el control si se introduce un valor numrico positivo
If
f Not IsNumeric(TextBox3.Text)
i (
3
) OrElse
l
CInt(TextBox3.Text)
(
3
) <= 0 Then
h
MessageBox.Show("Se debe introducir un valor numrico mayor a 0")
TextBox3.Text = String.Empty
e.Cancel = True
End If
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

23

23

La clase Form
Representa una ventana o cuadro de dilogo de la aplicacin.
Desde
D d ell punto
t de
d vista
i t de
d la
l interfaz,
i t f
se utilizar
tili cmo

un contenedor
t
d de
d
controles.
Desde el punto de vista de la aplicacin, ser un objeto heredado de la
clase Form y que constituye el punto de entrada de la aplicacin.
Normalmente
N
l
t contendr
t d llas d
declaraciones
l
i
y ell cdigo
di de
d la
l aplicacin.
li i

En el archivo Formx.designer.vb

Partial Class Form1


Inherits System.Windows.Forms.Form
'Cdigo generado por Visual Studio con las caractersticas del formulario
...
End Class

En el archivo Formx.vb
Formx vb
Public Class Form1
'Cdigo de usuario para manejar el formulario
...
End Class

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

24

24

La clase Form (II)


Ciclo de vida de un formulario. Eventos que intervienen.
1. Evento Load().

z Se produce cuando el formulario se carga por primera vez y antes


de que se muestre.
z Es el lugar adecuado para meter el cdigo necesario para
inicializar variables, abrir bases de datos, dar contenido a los
controles, etc.

2. Evento Shown()

z Se produce la primera vez que se muestra.


muestra

3. Evento Activated().

z Se produce cada vez que el formulario entra en foco, ya sea por


una accin del usuario o por el cdigo del programa.
z Este
E t evento
t se puede
d usar para lla actualizacin
t li i del
d l contenido
t id con
los cambios que pudieran haberse producido cuando no estaba
activado.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

25

25

La clase Form (III)


Ciclo de vida de un formulario (continuacin)
4. Evento Deactivate().
z Se produce cuando el formulario pierde el foco.
z Puede utilizarse para actualizar el contenido de otra ventana con los
d t del
datos
d l formulario
f
l i que ha
h perdido
did ell foco.
f

5. Evento FormClosing().
z Se produce cuando se da la orden de cerrar el formulario, pero antes
de que se cierre
cierre.
z Es posible cancelar la accin de cierre poniendo a True la propiedad
Cancel del argumento FormClosingEventArgs del control.

6. Evento FormClosed().
()
z Se produce despus de haberse cerrado el formulario.
z Se puede utilizar para liberar recursos utilizados por el formulario,
almacenar la informacin producida por l o actualizar otro formulario.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

26

26

Mover y cambiar el tamao del


formulario
o
ua o
Propiedades Size, Location, Bounds.
Propiedades DesktopLocation y DesktopBounds.
Establecen la posicin (un objeto Point) y el tamao (un objeto Size) a partir
del rea del escritorio no ocupada por la barra de tareas.
9 Realizan acciones distintas a Location y Bounds si la barra de tareas est no esta
acoplada
l d a la
l parte inferior.
f

Mtodos SetDesktopLocation y SetDesktopBounds.


SetDesktopLocation(x,y)
SetDesktopBounds(x,y,ancho,alto)
p
,y,
,

'Establece la posicin y el tamao de la pantalla activa


'Screen.PrimaryScreen hace referencia a la pantalla principal
'La propiedad WorkingArea devuelve el tamao y posicin de una pantalla
Me.DesktopBounds = Screen.PrimaryScreen.WorkingArea
'Establece el tamao del formulario a 1/4 del tamao del escritorio
'y lo centra en el cuadrante inferior derecho del mismo
Me.SetDesktopBounds(Screen.PrimaryScreen.WorkingArea.Width / 2, _
Screen.PrimaryScreen.WorkingArea.Height / 2, _
Screen PrimaryScreen WorkingArea Width / 2
Screen.PrimaryScreen.WorkingArea.Width
2, _
Screen.PrimaryScreen.WorkingArea.Height / 2)
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

27

27

Mover y cambiar el tamao del


formulario
o
u a o (II)
( )
Mtodos CenterToScreen() y CenterToParent().
Centran el formulario en la pantalla y en el formulario padre (en el caso de que
sea una aplicacin MDI).

Propiedad TopMost.
Asignando un valor True, el formulario siempre aparece por encima del resto.

Propiedad StartPosition.
Establece la posicin de inicio del formulario.
Mi b
Miembros
de
d StartPosition
St tP iti

D i i
Decripcin

CenterParent

El formulario est centrado en los lmites de su formulario principal.

CenterScreen

El formulario est centrado en la pantalla actual y tiene las dimensiones especificadas


en el tamao del formulario.

M
Manual
l

L posicin
La
i i d
dell fformulario
l i viene
i
d
determinado
i d por lla propiedad
i d d Location
L
i

WindowsDefaultBounds

El formulario se encuentra colocado en la ubicacin predeterminada de Windows y


tiene los lmites establecidos por Windows de forma predeterminada.

WindowsDefaultLocation

El formulario se encuentra colocado en la ubicacin predeterminada de Windows y


tiene las dimensiones especificadas en el tamao del formulario

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

28

28

Modificar el aspecto del formulario


Propiedad BackgroundImage.

Establece
E t bl
la
l imagen
i
de
d fondo
f d del
d l formulario.
f
l i

Propiedad Icon.

Establece el icono de la barra de ttulos del formulario.

Propiedades ControlBox,
ControlBox MaximizeBox,
MaximizeBox MinimizeBox,
MinimizeBox
HelpButton.

Contienen un valor lgico que establece si el botn del men de control,


maximizar, minimizar o el botn de ayuda aparecen en el formulario.

Propiedad Opacity.
O
it

Establece mediante un nmero real el nivel de transparencia de un


formulario.
9 De forma predeterminada el nivel de transparencia es de 1,00.

Propiedad
P i d d TransparencyKey.

Establece el color que ser transparente en el formulario.


9 Me.TranparencyKey = Me.Backcolor Hace transparente el fondo del
formulario.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

29

29

Modificar el aspecto del


formulario
o
u a o (II)
( )
Propiedad FormBorderStyle.

Permite tomar alguno de estos valores:

Parmetro

Descripcin

None

Ninguno (ningn borde ni elemento relacionado con l). Se utiliza para los formularios de inicio (por
ejemplo, pantallas de splash).

Fixed 3D

Se utiliza cuando se desea un efecto de borde tridimensional. No se puede cambiar de tamao.


Puede incluir en la barra de ttulo un botn de men de control y botones Maximizar y Minimizar.

Fixed Dialog

Se utiliza para los cuadros de dilogo. Presenta un borde grueso. No se puede cambiar de tamao.
Puede incluir en la barra de ttulo un cuadro de men de control, y botones Maximizar y Minimizar.

Fixed Single.

No se puede cambiar de tamao. Presenta un borde de una sla lnea. Puede incluir cuadro de
men de control y botones Maximizar y
minimizar. Slo puede cambiar de tamao con los botones Maximizar y Minimizar.

Fixed Tool Window

Se utiliza para las ventanas de herramientas. Muestra una ventana de tamao no ajustable con un
botn Cerrar y texto de barra de ttulo con un tamao de fuente reducido. El formulario no aparece
p
en la barra de herramientas de Windows.

Sizable

Con frecuencia se utiliza como ventana principal. Se le puede cambiar el tamao. Puede incluir un
men de control y botones Maximizar y Minimizar. Puede cambiar de tamao mediante el cuadro
de men de control, los botones Maximizar y Minimizar de la barra de ttulo, o mediante el ratn.

Si bl T lWi d
SizableToolWindow

Ventana
V
t
de
d herramientas
h
i t de
d tamao
t
variable.
i bl Una
U ventana
t
de
d herramientas
h
i t no aparece en la
l b
barra
de tareas ni en la ventana que aparece cuando el usuario presiona ALT+TAB.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

30

30

Mostrar formularios
Formulario de inicio.
Se selecciona en la pgina

Aplicacin del Diseador de


proyectos.
Dependiendo del tipo de
aplicacin se puede seleccionar:
9 Para aplicaciones de consola.
o

Sub Main de un mdulo.

9 Para aplicaciones Windows.


o Cualquiera de los formularios de
la lista Formulario de inicio

9 Biblioteca de clases.
o No existe un objeto inicial.

Se puede establecer en tiempo de


ejecucin mediante
cdigo en el mtodo Main()
mediante
el mtodo Run del
objeto
j
Application.
pp

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Sub Main()
Dim frm As New Form1
Application.Run(frm)
End Sub

31

31

Mostrar formularios (II)


Mostrar formularios secundarios no modales.

Se debe crea una instancia del formulario y aplicar el mtodo Show().


Show()
'El proyecto incluye la clase Form3
Dim frm As New Form3
frm.Show()

En el Visual Basic de .NET Framework 2.0, se puede acceder a instancias de los formularios
a travs del objeto My.Forms.
'El proyecto incluye la clase Form3
My.Forms.Form2.Show()

Mostrar formularios modales.

Se crea una instancia del formulario y se usa el mtodo ShowDialog().


El propietario ser el formulario activo al hacer la llamada.

9 ShowDialog() puede pasar como argumento una referencia a otro formulario para cambiar el
formulario propietario.

ShowDialog() devuelve un elemento del enumerado DialogResult.

9 La propiedad DialogResult del formulario permite especificar que valor del


enumerado devuelve (p.e. Me.DialogResult = DialogResult.Yes).
o Al asignar esta propiedad, el formulario se cierra.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

32

32

Mostrar formularios (III)


Los formularios modales y no modales tienen distinto comportamiento:

En los no modales,
modales al abrir con el mtodo Show,
Show contina el evento que ha realizado la llamada.
llamada
En los modales, al abrir con el mtodo ShowDialog, el evento que ha realizado la llamada se detiene
hasta que se cierra el formulario modal.

'En el botn Aceptar de Form2


Private Sub Button1_Click
'Esto tambin cierra el formulario
Me.DialogResult = DialogResult.OK
End Sub

'En Form1
Private Sub Button1
Button1_Click()
Click( )
Dim frm As New Form2
Dim r As DialogResult = frm.ShowDialog()
Select Case r
Case DialogResult.OK
Acciones cuando se pulsa Aceptar
'Acciones
Case DialogResult.Cancel
'Acciones cuando se pulsa Cancelar
Case DialogResult.Retry
'Acciones cuando se pulsa Reintentar
End Select
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

33

33

Compartir informacin entre


formularios
o
u a os
Con formularios modales.
Se puede acceder a los controles de un formulario modal desde el
formulario que lo llama.
Dim frm As New Form2
frm.ShowDialog()
'Accede al contenido de TextBox1 en Form2
MessageBox.Show(frm.TextBox1.Text)

Se puede acceder a las variables pblicas

del formulario modal


desde el formulario que lo llama.
'En Form2
Public a As Integer = 10

'En Form1
Dim frm As New Form2
frm.ShowDialog()
'Accede al contenido de la variable a de form2
MessageBox.Show("A = " & frm.a)
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

34

34

Compartir informacin entre


formularios
o
u a os (II)
( )
Con formularios no modales o en las ventanas secundarias
Se pueden utilizar variables globales en la ventana principal o en un
mdulo de cdigo.
9 Cmo no tenemos una referencia a la instancia donde est declarada la
variable hay que hacer que la variable sea compartida.
variable,
compartida
'En Form1
Public Shared otraVariable As Integer = 100

'En Form2
MessageBox.Show(Form1.otraVariable)

Tambin se pueden poner las variables en un mdulo de cdigo.


'En Module1
Public MsVariables as Integer = 200

'En Form1 o en Form2


MessageBox.Show(MsVariables)
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

35

35

Compartir informacin entre


formularios
o
u a os (III)
(
)
Acceder a la informacin de un formulario por medio de My.Forms.
My.Forms proporciona
i
una instancia
i
i de
d cada
d formulario
f
l i en ell proyecto actual.
l
9 Para acceder a cada formulario, el nombre de la propiedad que hay que llamar es igual
que el nombre de la clase que forma el formulario.
o My.Forms.Form1.Show()
9 La primera vez que se accede a un formulario con My.Forms,
My Forms se crea la instancia del
mismo. Las veces siguientes, se acceder a la instancia creada anteriormente.

Slo proporciona acceso a los formularios en aplicaciones Windows Forms, no en


aplicaciones de consola o en formularios contenidos en DLL.
A partir de la instancia proporcionada es posible acceder a todos los miembros
del formulario.
Para acceder a todos los formularios abiertos de una aplicacin en un momento
dado se puede utilizar la propiedad. My.Application.OpenForms, que
p
devuelve una coleccin con todos los formularios de la aplicacin.
'Escribe en una etiqueta, el ttulo de todos los formularios abiertos
For Each frm As Form In My.Application.OpenForms
Label1.Text = Label1.Text & " " & frm.Text
Next
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

36

36

Compartir informacin entre


formularios
o
u a os (IV)
( )
Ejemplo: intercambiar informacin entre dos formularios con My.Forms.

Public Class Form1


'Cada vez que se pulsa el botn
botn, el contenido del textbox pasa a form2
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
My.Forms.Form2.TextBox1.Text = TextBox1.Text
My.Forms.Form2.Show()
y
()
End Sub
End Class
Public Class Form2
'Al cerrar Form2, el contenido del TextBox para a Form1
Private Sub Form2_FormClosing(ByVal sender As Object, _
ByVal e As _
System.Windows.Forms.FormClosingEventArgs) _
Handles Me.FormClosing
My.Forms.Form1.TextBox1.Text = TextBox1.Text
End Sub
End Class
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

37

37

Clase Label
Representa un campo de texto esttico.
Propiedad Text.
Text

9 Obtiene o establece el texto de la etiqueta en modo de diseo o ejecucin.


9 Propiedad TextAlign.

o Alineacin del texto. Puede contener alguno de los valores del enumerado ContentAlign
(BottomCenter, BottomLeft, BottomRight, MiddleCenter, MiddleLeft,
MiddleRight TopCenter,
MiddleRight,
TopCenter TopLeft,
TopLeft TopRight).
TopRight)

Aspecto, tamao, posicin.

9 Propiedades Location, Size, Backcolor, Forecolor, Font.


9 Propiedad BorderStyle.

o Puede tomar alguno de los valores de la enumeracin BorderStyle: Fixed3D,


FixedSingle o None.
None

9 Propiedad Autosize.
o Un valor lgico True hace que el tamao de la etiqueta se adecue al tamao del texto.
True es el valor por omisin.

9 Propiedad Autoelipsis.
o Si esta
t a True, visualiza
i
li puntos
t suspensivos
i
sii ell texto
t t de
d la
l etiqueta
ti
t se extiende
ti d ms
all
ll de
d
su longitud.

9 Propiedad Image.

o Permite establecer una imagen en la etiqueta. La propiedad ImageAlign permite establecer


la alineacin de dicha imagen.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

38

38

Clase LinkLabel
Hereda de Label.
Permite establecer un enlace en la etiqueta.
Propiedad LinkArea.
9 Establece el rea de la imagen.
9 Se le debe asignar un objeto de la clase LinkArea.
o Constructor de LinkArea: LinkArea(inicio,longitud).

Evento LinkClicked.
9 Se produce cuando se pulsa sobre el enlace
enlace.
LinkLabel1.Text = "Programa realizado por Mi compaa. www.micompania.es"
LinkLabel1.LinkArea = New LinkArea(35, 53)

Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, _


ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs)_
Handles LinkLabel1.LinkClicked
'La orden Shell permite ejecutar un archivo del sistema
Shell("explorer http://www.micompania.es")
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

39

39

Clase TextBox
Representa
p
un campo
p de texto editable por
p el usuario.
Propiedad Text.
9 Permite obtener o establecer el texto del control.

Propiedad TextAlign.
TextAlign
9 Permite establecer la alineacin del texto. Su contenido es un
miembro del enumerado HorizontalAligment (Right, Center,
)
Left).

Cuadros multilnea.
9 La propiedad Multiline permite cuadros multilnea.
9 La propiedad WordWrap permite el salto de lnea automtico.
9 La propiedad ScrollBars, aade barras de desplazamiento al
cuadro de texto multilinea.
9 Todas las lneas se almacenan en el arrayy de cadenas Lines.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

40

40

Clase TextBox (II)


Modificar el contenido.
Cada vez que se modifica el texto del control se produce el evento
TextChanged().
La propiedad Modified se pone a True si el cuadro se ha modificado.
Propiedad CharacterCasing,
CharacterCasing permite convertir el texto en a
maysculas (Upper) o minsculas (Lower).
Propiedad PasswordChar.
9 Todo el texto escrito se visualiza como el carcter asignado a esa propiedad.

Propiedad UseSystemPasswordChar.
9 Todo el texto escrito se visualiza como el carcter que el sistema utiliza
como carcter de contrasea.

Mtodo AppendText(cadena).
9 Aade la cadena al final del cuadro de texto.

Propiedad ReadOnly.
9 Impide modificar el cuadro de texto.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

41

41

Clase TextBox (III)


Autocompletar el contenido de un TextBox.

La propiedad AutoCompleteMode
A t C
l t M d permite indicar si queremos que se
autocomplete el contenido de los escrito en un TextBox:
9
9
9
9

None, no se autocompleta.
Append, al teclear los primeros caracteres aaden los que faltan.
Sugest, despliega
g una lista con las posibles opciones a completar.
Sugest Append, aade los que faltan y despliega la lista.

La propiedad AutoCompleteSource, indica el origen de los datos a


autocompletar.

9 FileSystem Especifica el sistema de archivos como origen.


9 HistoryList Incluye los URL en la lista de historial.
historial
9 RecentlyUsedList Incluye los URL de la lista de las direcciones usadas
recientemente.
9 AllUrl Especifica el equivalente de HistoryList y RecentlyUsedList como el
origen.
9 AllSystemSources Especifica el equivalente de FileSystem y AllUrl como el
origen.
9 FileSystemDirectories Especifica que slo los nombres de directorio y no los
nombres de archivo se finalizarn automticamente.
9 CustomSource Especifica que se utilizarn las cadenas que formen la propiedad
AutoCompleteCustomSource
AutoCompleteCustomSource.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

42

42

Clase TextBox (IV)


Control del punto de insercin y del texto seleccionado.
La propiedad SelectionStart permite obtener o establecer el punto
de insercin.
9 Un valor 0 indica que el punto de insercin est antes del primer carcter.

La propiedad SelectionLength permite obtener o establecer la


longitud del texto seleccionado.
9 Un valor igual a 0 indica que no hay seleccionado ningn carcter.

La propiedad SelectedText obtiene o establece el texto seleccionado.


9 Una cadena nula elimina indica que no hay texto seleccionado o elimina el
mismo.

Los mtodos Cut(), Copy() o Paste(), permiten cortar, copiar o


pegar el texto.
El mtodo SelectAll() selecciona todo el contenido del cuadro de
texto.
El mtodo Select(inicio,longitud) permite seleccionar una
porcin de texto.
texto
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

43

43

Clase TextBox (V)

TextBox1.SelectionStart = 3
TextBox1.SelectionLength = 10
TextBox1.SelectedText = ""
TextBox1.SelectionLength = 5
TextBox1.Copy()
TextBox1.SelectionStart = TextBox1.TextLength
TextBox1.Paste()
TextBox1.SelectAll()
TextBox1.Select(3, 5)
T tB 1 C t()
TextBox1.Cut()

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

44

44

Clase Button
Desciende de la clase System.Windows.Forms.ButtonBase, de la que
tambin descienden la clase RadioButton
R di B tt
y CheckBox.
Ch kB
La propiedad Text, establece la etiqueta del control y permite asignar una
tecla de acceso.
Apariencia del botn.
La propiedad Image, permite establecer una imagen para el control.
9 La propiedad ImageAlign, permite establecer su posicin en el control y puede tomar
alguno de los valores de ContentAlignment (vase pgina 12).

La p
propiedad
p
BackgroundImage
g
g p
permite repetir
p
una imagen
g a lo largo
g del rea
que ocupa el control.

Botones por omisin.


Las propiedades AcceptButton y CancelButton del formulario permiten
especificar que botn se ejecutar al pulsar ENTER o al pulsar ESC.
La propiedad DialogResult, permite especificar que valor devolver el botn
al ser pulsado en un cuadro de dilogo modal.
9 Hace lo mismo que establecer la propiedad DialogResult del formulario.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

45

45

Clase PictureBox
Acta como contenedor de imgenes de mapas de bits.
La imagen se guarda en un objeto de la clase Image accesible
mediante la propiedad Image de la clase.
El mtodo FromFile(espArchivo) devuelve un objeto de la clase
Image a partir de un archivo .bmp, .jpg, .ico, .gif, .wmf o .png
contenido en disco.
PictureBox1.Image = FromFile(C:\imgenes\MiImagen.jpg)

Para eliminar dicho contenido hay que asignar a la propiedad Image de


PictureBox el literal Nothing.
Nothing
PictureBox1.Image = Nothing

Tamao y posicin de la imagen en el control


La propiedad SizeMode permite acomodar la imagen en el control. Puede
tomar alguno de los siguientes valores:
9 Autosize. El tamao del control se adecua al de la imagen.
9 CenterImage. La imagen se centra en el control, recortndola si es necesario.
9 Normal. La imagen se sita en la esquina superior izquierda del control,
recortndola si es necesario.
9 StretchImage.
h
L imagen
La
i
se adapta
d t all ttamao
d
dell control.
t l

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

46

46

Clase RadioButton
Representa un grupo de opciones excluyentes.
Se pueden crear grupos independientes siempre que aparezcan en contenedores
distintos.
9 Los controles contenedores son el objeto Form, el objeto Panel y el objeto
GroupBox.

Control GroupBox

La propiedad Checked devuelve un valor lgico dependiendo del estado


del control
control.
Eventos del control.
Adems del evento Click presente en casi todos los controles, es posible
controlar el evento CheckedChanged que se produce cuanto la propiedad
Checked cambia
bi de
d estado.
d
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

47

47

Clase RadioButton (II)


Aspecto del control.
Propiedad Image.
Las propiedades TextAlign, ImageAlign y CheckAlign pueden tomar
algn valor del enumerado ContentAlignment.
Propiedad FlatStyle.
9 Puede tomar alguno de los valores del enumerado FlatStyle:
o
o
o
o

Standard. Aspecto tridimensional.


p
plano.
p
Flat. Aspecto
Popup. Aspecto plano hasta que el cursor pasa por encima.
System. Toma el aspecto predeterminado del sistema.

Propiedad Appareance.
9 Normal
Normal. Toma el aspecto normal
normal.
9 Button. Toma el aspecto de botn.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

48

48

Control RadioButton (III)


Manejo
j del control.
Cambiar el tratamiento de la persona (Don o Doa) segn est
marcado el RadioButton Hombre o el RadioButton Mujer.
Public tratamiento As String
...
Private Sub Sexo_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles radHombre.CheckedChanged, _
radMujer.CheckedChanged
If radHombre.Checked Then
Tratamiento = "Don"
Don
Else
Tratamiento = "Doa"
End If
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

49

49

Clase CheckBox
Representa un grupo de opciones no excluyentes.
El control puede devolver de forma predeterminada tres estados
distintos: Checked, Unchecked o Indeterminate.

La propiedad lgica ThreeState permite determinar si el control va a


tener esos tres estados o nicamente Checked y Unchecked.
La propiedad Autocheck permite pasar automticamente de un estado
a otro.
9 Con las propiedades ThreeState y AutoCheck a True

Estado inicial

Primer Click

Segundo Click

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Tercer Click
50

50

Clase CheckBox (II)


El estado del control se puede obtener o establecer a travs de las
propiedades:
i d d
Checked, devuelve un valor lgico segn est o no marcado el control.
9 Devuelve True cuando el estado del control es Checked o Indeterminate.

CheckState, devuelve un valor del enumerado CheckState:


9 CheckState.Checked, CheckState.Indeterminate y CheckState.Unchecked.

Eventos (se desencadenan en este orden):


CheckedChanged, se desencadena cuando cambia el estado de la propiedad
Checked.
CheckStateChanged, se desencadena cuando cambia el valor de la propiedad
CheckState.
Click, se desencadena cuando el usuario pulsa sobre el control.
Se desencadenan los eventos
Se desencadena
Se desencadenan los eventos
CheckedChanged
el evento
CheckedChanged
y CheckStateChanged
CheckStateChanged
y CheckStateChanged

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

51

51

Clase TrackBar
Proporciona una barra de seguimiento (control deslizante).
Se utilizar para asignar de forma grfica valores numricos continuos.
9 Por ejemplo controles de volumen u otros valores analgicos.

Propiedad Value.
Proporciona un valor entero representado por el cuadro de
desplazamiento de la barra.

Propiedades Minimum y Maximum.


Valores mximo y mnimo p
permitidos en la barra.

Propiedad LargeChange.
Representa el incremento o decremento que se produce en la propiedad
Value cuando utilizan las teclas AvPg o RePg.

Propiedad SmallChange.
Representa el incremento o decremento que se produce en la propiedad
Value cuando se utilizan las teclas del cursor.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

52

52

Clase TrackBar (II)


Propiedad Orientation.
Permite definir la orientacin (Horizontal o Vertical) del
control.

TickFrecuency.
Un entero que permite establecer la distancia entre las marcas
del control.

TickStyle.
Un miembro del enumerado TickStyle que especifica que
marcas aparecern en el control.
9 BottomRight (valor predeterminado). Las marcas aparecen abajo
o a la derecha segn la orientacin del control
control.
9 None. No aparecen las marcas.
9 Both. Las marcas aparecen a ambos lados.
9 TopLeft. Las marcas aparecen arriba o a la izquierda.
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

53

53

Clase TrackBar (III)


Eventos.
Evento Scroll.
9 Se produce cuando se desplaza el cuadro de desplazamiento
mediante el ratn o el teclado.

Evento ValueChanged.
9 Se produce cuando cambia la propiedad Value, ya sea por cdigo o
por una accin del usuario.
p

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

54

54

Clase TrackBar (IV)


Enlazar un control TrackBar a un cuadro de texto.
La informacin grfica de los valores que proporciona el control se debe
acompaar de una referencia numrica.

Private Sub TrackBar1_Scroll(ByVal


_
sender As System.Object, _
ByVal e As System.EventArgs) _
Handles TrackBar1.Scroll
TextBox1.Text = TrackBar1.Value
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

55

55

Clase TrackBar (V)


Enlazar un cuadro de texto a un control ScrollBar.
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles TextBox1.TextChanged
'Slo se modifica el valor del trackbar si el cuadro de texto
'tiene un valor numrico
If IsNumeric(TextBox1.Text) Then
If TextBox1.Text < TrackBar1.Minimum Then
'Si el valor es menor que el mnimo, se iguala al mnimo
TextBox1 Text = TrackBar1
TextBox1.Text
TrackBar1.Minimum
Minimum
ElseIf TextBox1.Text > TrackBar1.Maximum Then
'Si el valor es mayor que el mximo se iguala al mximo
TextBox1.Text = TrackBar1.Maximum
End If
'Una vez que se tiene un valor correcto, se cambia
'la propiedad value del Trackbar
TrackBar1.Value = TextBox1.Text
End If
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

56

56

Clases HScrollBar y VScrollBar


Proporcionan barras de desplazamiento horizontal y
vertical.
ti l

Se pueden utilizar para proporcionar desplazamiento en


controles que no las incluyan o para asignar de forma grfica
valores numricos.

Existen dos controles:

HScrollBar, barra de desplazamiento horizontal


VScrollBar, barra de desplazamiento vertical

Las propiedades y el modo de manejo es similar al


control TrackBar.
No se recomienda su uso para no confundir el control
con las barras de desplazamiento incluidas en algunos
controles.
Es p
preferible utilizar el control TrackBar.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

57

57

Clase NumericUpDown
Proporciona un mecanismo para introducir valores numricos.

Est formado por un cuatro de texto y dos flechas


flechas.

La p
propiedad
p
Value establece o devuelve el valor del cuadro de texto asociado.

Propiedad Maximum y Minimum.


Propiedad Increment. Establece o devuelve el incremento o decremento al pulsar
cualquiera de las flechas.
Propiedad ReadOnly. Un valor True impide al usuario modificar los valores del cuadro de
texto.

Aspecto del control.

Propiedades TextAlign (se puede alinear a la izquierda derecha o centro) y


UpDownAlign (se puede alinear a la izquierda o a la derecha).
Propiedad DecimalPlaces.
Propiedad Hexadecimal.
Hexadecimal

Realizan el mismo efecto que pulsar las teclas arriba o abajo.

Mtodos UpButton y DownButton.

El cambio de valor del control se intercepta mediante el evento ValueChanged.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

58

58

Clase DomainUpDown
Tiene una funcionalidad y un aspecto similar a la clase
NumericUpDown.

Permite establecer una cadena de texto a partir de una serie de elementos.

Los elementos del control se guardan en la propiedad Items.

Se pueden insertar en tiempo de diseo en la ventana de propiedades.


Se p
pueden insertar en tiempo
p de ejecucin
j
mediante el mtodo Add de la coleccin Items.
Se pueden eliminar en tiempo de ejecucin mediante la propiedad Remove.
La propiedad SelectedItem devuelve el valor del elemento seleccionado del control.
La propiedad SelectedIndex devuelve o establece el ndice del elemento seleccionado del
control.

Propiedad Wrap.

Un valor True, permite realizar un ciclo por dichos elementos (del ltimo de la lista pasar al
primero).

El evento SelectedItemChanged se produce cuando cambia el valor de la propiedad


SelectedItem.

Si el valor se cambia mediante el cuadro de texto se produce el evento TextChanged.


9 Tambin cambia la propiedad SelectedItem (y se desencadena el evento SelectedItemChanged) a 1.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

59

59

La clase ListBox
Muestra una serie de elementos de los q
que el usuario
puede seleccionar uno o ms.
Los elementos incluidos en el control se guardan en la
propiedad Items.
Items es una coleccin del tipo
ListBox.ObjectCollection que puede incluir cualquier tipo
j
utilizado en .NET.
de objeto

Los elementos seleccionados se guardan en la propiedad


SelectedItems, una coleccin del tipo
ListBox.SelectedObjectCollection.
Los ndices de los elementos seleccionados se guardan
en la propiedad SelectedIndices, una coleccin del
tipo ListBox.SelectedIndexCollection.
ListBox SelectedIndexCollection
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

60

60

Clase ListBox (II)


La coleccin Items.
Representa a los objetos
incluidos en la lista.
Agregar elementos a la
coleccin.

9 Se pueden agregar en
tiempo de diseo
mediante el editor de la
propiedad.
o En tiempo de diseo
slo es posible aadir
cadenas.

9 En tiempo de ejecucin
se pueden agregar
mediante el mtodo Add.
ObjetoListBox.Items
.Add(objeto)
j
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

ListBox1.Items.Add("Elemento
ListBox1.Items.Add("Elemento
ListBox1.Items.Add("Elemento
ListBox1.Items.Add("Elemento
Li tB 1 It
ListBox1.Items.Add("Elemento
Add("El
t
ListBox1.Items.Add("Elemento

01")
02")
03")
04")
05")
06")
61

61

Clase ListBox (III)


La coleccin Items.
Agregar elementos a la coleccin (continuacin).
9 Mediante el mtodo Add es posible aadir cualquier tipo de objetos.
Structure persona
Di id A
Dim
As I
Integer
t
Dim nombre As String
Dim apellidos As String
Sub New(ByVal id As Integer, ByVal ape As String, ByVal nom As
String)
Me.id = id
nombre = nom
apellidos = ape
End Sub
'El mtodo toString permite convertir un objeto en una cadena
Overrides Function toString() As String
Return apellidos & ", " & nombre
End Function
End Structure
...
lstPersonas.Items.Add(New persona(123, "Perez", "Pepe"))
lstPersonas Items Add(New persona(323
lstPersonas.Items.Add(New
persona(323, "Juarez"
"Juarez", "Ana"))
lstPersonas.Items.Add(New persona(333, "Bartolomez", "Bartolo"))
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

62

62

Clase ListBox (IV)


La coleccin Items.
Agregar
A
elementos
l
t a la
l coleccin
l i (continuacin)
( ti
i ).
9 El mtodo Insert permite aadir un elemento en una
posicin especfica mayor o igual que 0 y menor o igual que el
nmero de elementos.
ObjetoListBox.Items.Insert(ndice,objeto)
Listbox1.Items.Insert(3,Nuevo elemento)
9 Se puede insertar cualquier objeto de cualquier tipo en la lista,
lstPersonas.Items.Insert(0, New Persona(456,
"Estvez", "Esteban"))

Eliminar elementos de la coleccin


coleccin.
9 El mtodo Remove permite eliminar un elemento de la
coleccin a partir de su valor.
ObjetoListBox.Items.Remove(objeto)
ListBox1.Items.Remove(Elemento 01)
9 El mtodo
t d RemoveAt permite
it eliminar
li i
un elemento
l
t de
d la
l
coleccin a partir de su ndice.
ObjetoListBox.Items.Remove(ndice)
ListBox1.Items.RemoveAt(1)
permite eliminar todos los elementos de la
9 El mtodo Clear p
coleccin.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

63

63

Clase ListBox (V)


Eliminar objetos de la lista

Se puede pasar como argumento una referencia a un objeto de la lista


lista.
'p es una referencia a un elemento de la lista
'no un dato de tipo persona cualquiera
'No valdra si Dim p as persona = new Persona(323, "Juarez", "Ana")
Dim p As Persona = lstPersonas.Items(1)
( )
lstPersonas.Items.Remove(p) 'Elimina el segundo elemento de la lista

Si queremos buscar y borrar un elemento concreto habr que realizar una bsqueda.
Dim p As persona = New persona(323, "Juarez", "Ana")
'Eli i
'Elimina
el
l objeto
bj t p (A
(Ana J
Juarez)
) d
de l
la li
lista
t
'a partir de la bsqueda de su identificador
'Es necesario codificar la funcin Equal en la estructura Persona
For Each obj As persona In lstPersonas.Items
If obj.Equals(p) Then
lstPersonas.Items.Remove(obj)
Exit For
End If
Next
...
'En la estructura Persona
Overloads Function Equals(ByVal o As persona) As Boolean
Return o.id = id
End Function

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

64

64

Clase ListBox (VI)


La coleccin Items.
La propiedad Count devuelve el nmero de elementos de la
coleccin.
Buscar elementos en la coleccin
coleccin.
9 La propiedad Contains devuelve un valor lgico True si el
elemento que se pasa como argumento est incluido en la
coleccin.
o ObjetoListBox.Items.Contains(objeto)

9 La propiedad IndexOf devuelve el ndice del objeto que se pasa


como argumento.
o Devuelve -1 si el objeto no se encuentra.
ObjetoListBox.Items.IndexOf(objeto)
En el cdigo de la pgina anterior se podra haber puesto
lstPersonas.Items.RemoveAt(lstPersonas.Items.IndexOf(obj))
(
( j))

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

65

65

Clase ListBox (VII)


Trabajar con elementos de la lista.
La propiedad SelectedIndex devuelve el ndice del elemento
seleccionado de la lista.
9 Devuelve -1 si no se ha seleccionado ninguno.

La propiedad SelectedItem devuelve el elemento seleccionado de la


lista.
9 Devuelve el literal Nothing si no se ha seleccionado ninguno.

La propiedad Text devuelve el contenido del elemento seleccionado


convertido
tid a cadena.
d

Eventos.
Eventos Click y DoubleClick.
Evento SelectedItemChanged.
SelectedItemChanged
9 Se produce cuando cambia el valor de la propiedad SelectedItem.

Evento SelectedIndexChanged.
9 Se produce cuando cambia el valor de la propiedad SelectedIndex.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

66

66

Clase ListBox (VIII)


Al seleccionar un elemento,
aparece su contenido y su posicin

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles ListBox1.SelectedIndexChanged
i
TextBox1.Text = (ListBox1.SelectedItem)
TextBox2.Text = (ListBox1.SelectedIndex)
End Sub
Al seleccionar una persona, aparece su
identificador
Private Sub lstPersonas_SelectedIndexChanged(ByVal
lstPersonas SelectedIndexChanged(ByVal sender As System
System.Object,
Object _
ByVal e As System.EventArgs) _
Handles lstPersonas.SelectedIndexChanged
Dim p As persona = lstPersonas.SelectedItem
TextBox3.Text = p.id
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

67

67

Clase ListBox (IX)


Seleccin mltiple.
La propiedad SelectionMode permite seleccionar varios elementos al
mismo tiempo. Puede tomar alguno de los siguientes valores:
9 None. No se puede seleccionar ningn elemento.
9 One. Slo es posible seleccionar un valor (valor predeterminado).
9 MultiSimple. Permite seleccionar varios elementos.
o La seleccin se realizar marcando cada elemento con el ratn o la barra espaciadora.

9 MultiExtended. Permite seleccionar varios elemento.

o La seleccin se puede realizar marcando cada elemento y utilizando las teclas CTRL,
SHIFT o llas tteclas
l d
dell cursor.

La coleccin SelectedItems guarda los objetos seleccionados.


La coleccin SelectedIndices guarda los ndices de los elementos
seleccionados.
El mtodo GetSelected(indice) permite saber si un elemento ha sido
seleccionado.
El mtodo SetSelected(ndice,valor) permite modificar el estado de
un elemento determinado.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

68

68

La clase ListBox (X)


Coleccin Items
ndice

Objeto

Estado de la seleccin

Elemento 02

Seleccionado

Nuevo elemento

No seleccionado

Elemento 04

Seleccionado

El
Elemento
t 05

S l
Seleccionado
i
d

Elemento 06

No seleccionado

Coleccin SelectedItems
ndice

Objeto
j

Elemento 02

Elemento 04

Elemento 05

Coleccin SelectedIndices
ndice

Objeto

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

69

69

La clase ListBox (XI)


Ejemplo: copiar los elementos seleccionados de un ListBox a otro
all pulsar
l
ell botn
b Copiar:
C i

Private Sub Button1_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
H dl
Handles
B
Button1.Click
tt 1 Cli k
For Each elem As Object In ListBox1.SelectedItems
ListBox2.Items.Add(elem)
Next
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

70

70

Clase ListBox (XII)


Otras propiedades.
p p
Propiedad Sorted. Un valor True permite ordenar los
elementos.
9 Cuando la propiedad est a True, el mtodo Add e Insert
aaden
d los
l elementos
l
t ordenados.
d
d

Barras de desplazamiento.
9 La propiedad ScrollAlwaysVisible determina si se ver
siembre la barra de desplazamiento.
desplazamiento
9 La propiedad HorizontalScrollbar permite visualizar una barra
de desplazamiento horizontal.

Propiedad IntegralHeight.
9 Indica si la altura de la lista slo puede visualizar elementos
completos.
o Un valor a True (predeterminado) impide que se visualicen elementos
parcialmente.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

71

71

Clase CheckedListBox
Hereda de ListBox y utiliza sus mismos miembros.
Permite visualizar un cuadro de lista con casillas de
verificacin a la izquierda de sus elementos.

No permite la seleccin de varios objetos, aunque si


permite marcar las casillas de varios de ellos.
Las colecciones SelectedItems y
SelectedIndices se sustituyen por
CheckedItems y CheckedIndices.
El evento ItemCheck se produce cuando cambia el
estado de alguno de sus elementos.
Utiliza un argumento del tipo
System.Windows.Forms.ItemCheckEventArgs
con los siguientes miembros:
9 Index. ndice del elemento que va a cambiar.
9 CurrentValue. Estado actual del elemento (Checked,
Unchecked, Indeterminate).
9 NewValue. Nuevo estado del elemento.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

72

72

Clase CheckedListBox (II)

Mtodo GetItemChecked(ndice).

Mtodo SetItemChecked(ndice,estado).
Permite establecer el elemento a los estados Checked o Unchecked.
Mtodo GetItemCheckState(ndice).

Devuelve True si el elemento est activado (estado Checked o Indeterminate) o False en caso contrario
contrario.

Permite obtener el estado del elemento.


9 Devuelve CheckedState.Checked,
CheckedState Checked CheckedState.Unchecked
CheckedState Unchecked o CheckedState.Indeterminate
CheckedState Indeterminate.

Mtodo SetItemCheckState(ndice, estado).


Permite establecer el estado del elemento a CheckedState.Checked, CheckedState.Unchecked
o CheckedState.Indeterminate.
Debug.WriteLine(CheckedListBox1.GetItemChecked(0)) 'Escribe True
Debug.WriteLine(CheckedListBox1.GetItemChecked(2)) 'Escribe False

CheckedListBox1.SetItemCheckState(1, CheckState.Indeterminate)
Debug.WriteLine(CheckedListBox1.GetItemCheckState(0))'Escribe Checked
Deb g W iteLine(CheckedListBo 1 GetItemCheckState(1))'Esc ibe Indeterminate
Debug.WriteLine(CheckedListBox1.GetItemCheckState(1))'Escribe
Indete minate
Debug.WriteLine(CheckedListBox1.GetItemCheckState(2))'Escribe Unchecked
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

73

73

Clase ComboBox
Combina un cuadro de lista con un
cuadro de texto
texto.

Presenta la mayora de las propiedades,


mtodos y eventos de ambos controles.

DropDownStyle
DropDown

9 No permite multiseleccin.
9 No captura el evento DoubleClick.
9 La propiedad
p opiedad SelectedIndex
S l t dI d
tambin
vale -1 si el usuario est editando el
texto.

Propiedad DropDownStyle.

DropDown. Un cuadro de lista


desplegable en el que el usuario puede
editar el texto.
DropDownList. Un cuadro de lista
desplegable en el que el usuario no
puede editar texto.
9 S
Se puede
d acceder
d a los
l elementos
l
t a
partir de la inicial.

Simple. Una lista no desplegable en la


que slo se ve el elemento seleccionado
o el que edita el usuario.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

DropDownStyle
DropDownList

DropDownStyle
List

74

74

Clase ComboBox (II)


Autocompletar el contenido de un ComboBox.
La propiedad AutoCompleteMode permite indicar si queremos que se autocomplete
el contenido de los escrito en un ComboBox:
9
9
9
9

None, no se autocompleta.
Append, al teclear los primeros caracteres aaden los que faltan.
Sugest, despliega una lista con las posibles opciones a completar.
SugestAppend, aade los caracteres que faltan y despliega la lista.

La propiedad AutoCompleteSource, indica el origen de los datos a autocompletar.


FileSystem Especifica el sistema de archivos como origen.
HistoryList Incluye los URL en la lista de historial.
RecentlyUsedList Incluye los URL de la lista de las direcciones usadas recientemente.
AllUrl Especifica el equivalente de HistoryList y RecentlyUsedList como el origen.
AllSystemSources Especifica el equivalente de FileSystem y AllUrl como el origen.
FileSystemDirectories Especifica que slo los nombres de directorio y no los nombres
de archivo se finalizarn automticamente.
9 ListItems. Especifica que los elementos de la lista son el origen.
9 CustomSource Especifica que se utilizarn las cadenas que formen la propiedad
AutoCompleteCustomSource
AutoCompleteCustomSource.

9
9
9
9
9
9

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

75

75

Clase ComboBox (III)


AutocompleteSource

FileSystem

FileSystemDirectories

HistoryList, AllUrl
y RecentlyUsedList

ListItems

Con AutoCompleteSource a CustomSource es necesario rellenar los elementos de


la coleccin personalizada en la propiedad AutoCompleteCustomSource
CustomSource

AutocompleteMode.
AutocompleteMode

Sugest

Append

SugestAppend

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

76

76

Mens
Los mens se construyen a partir de la clase
M
MenuStrip.
St i
MenuStrip representa un contenedor de la estructura
de mens de un formulario.

Crear un men.
Al arrastrar un men en el formulario, aparecer en la
bandeja de componentes y el rea donde aparecer el
men acoplada en la parte superior del formulario.

Elementos del men.


Son objetos de la clase ToolStripMenuItem.
Al seleccionar la barra de mens o el control
MenuStrip en la bandeja de componentes, el entorno
permitir escribir el ttulo del men.
p
A medida que se dan nombres a los elementos
ToolStripMenuItem del men, aparecen posiciones
para un nuevo elemento de men del mismo nivel o un
men desplegable

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

77

77

Mens (II)
Ttulos de los mens.
El carcter ampersand (&) hace que el carcter siguiente se convierta
en la tecla de acceso rpido.
9 Las recomendaciones de diseo de la interfaz indican que todos los
p
elementos de un men deben tener tecla de acceso rpido.

Nombres de los objetos MenuStrip y ToolStripMenuItem.


Puesto que un formulario slo tendr normalmente un elemento
MenuStrip la mayora de las veces no ser necesario dar un nombre
distinto.
distinto
En los elementos ToolStripMenuItem Visual Studio pone por
omisin un nombre formado por el ttulo y el sufijo
ToolStripMenuItem (por ejemplo, ArchivoToolStripMenuItem).
9 Para los submens, se recomienda utilizar para el nombre, el ttulo del men
de jerarqua superior y el nombre del actual.
o Por ejemplo una opcin Nuevo dentro del men Archivo podra tener el nombre
ArchivoNuevoToolStripMenuItem.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

78

78

Mens (III)
Tipos de elementos de men.
Por omisin el aspecto del elemento de men es una etiqueta con texto
esttico.
Es posible cambiar ese aspecto para mostrar un ComboBox o un
TextBox.
TextBox
9 Al pulsar con el botn secundario en un elemento de men, seleccionar la
opcin Convertir en.
o MenuItem. El aspecto por omisin.
o ComboBox. Aparece una lista desplegable. La propiedad Items del elemento de
men permite aadir elementos.
Se pueden aadir elementos al ComboBox de forma dinmica con el
mtodo Add de la propiedad Item del objeto ToolStripMenuItem.
Se puede acceder al texto seleccionado por la propiedad Text del objeto.
o TextBox. Aparece
A
como un cuadro
d de
d texto
t t editable.
dit bl
Se puede acceder al texto mediante la propiedad Text del objeto
ToolStripMenuItem.
o Los elementos de tipo ComboBox y TextBox no pueden tener submens.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

79

79

Mens (IV)
Aspecto del men.
P
Para agregar un separador
d entre
t d
dos elementos
l
t d
de men,
en ell men
contextual
t t l del
d l
elemento, seleccionar la opcin Insertar y en el submen Separator.
Marcas de verificacin.
9 La propiedad Checked permite aadir una marca de verificacin al men.
9 En tiempo de ejecucin
ejecucin, mediante cdigo
cdigo, es posible modificar la marca mediante la propiedad
CheckState.
o

Puede tomar los valores Checked, Unchecked o Indeterminate.

9 Las propiedades Checked y CheckState tambin permiten obtener el estado de


verificacin.
9 La propiedad CheckOnClick,
CheckOnClick permiten modificar el estado de la verificacin al hacer clic.
clic

Imgenes.
9 Si se trata de un elemento de men de tipo MenuItem es posible aadir una imagen al
margen con la propiedad Image.
9 Si la casilla de verificacin est activada, aparecer un recuadro rodeando la imagen.

Habilitar y deshabilitar elementos de un men.


9 La propiedad Enabled, permite deshabilitar las opciones no disponibles en un momento
dado.
o
o

No debera ser posible acceder a aquellas opciones no disponibles: la interfaz debe mostrar pistas
visuales.
Tambin es posible que no se muestren las opciones mediante la propiedad Visible.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

80

80

Mens (V)
Teclas de mtodo abreviado.

La propiedad ShortcutKeys permite asociar una tecla de mtodo abreviado al elemento de


men.
9 Slo deben tener teclas de mtodo abreviado las opciones finales de men.
9 Si la propiedad ShowShortcutKeys est a True, aparecer la combinacin de teclas a la derecha.

Aadir opciones estndar de men.

En el glifo ( ) de etiqueta inteligente del control MenuStrip y seleccionar Insertar


Insertar elementos
estndar.
Se aaden los elementos estndar de un men Windows.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

81

81

Mens (VI)
Controlar los eventos.
Para asociar una accin a cualquier elemento de un men se
utilizar el evento Click.
Private Sub ArchivoNuevoToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles NuevoToolStripMenuItem.Click
'Introducir el cdigo correspondiente a la opcin Nuevo del men Archivo
End Sub

Si se utilizan elementos de men con casillas de verificacin, los


eventos CheckedChanged y CheckStateChanged permite
verificar
ifi
sii se ha
h modificado
difi d su estado.
t d
9 Funcionan de la misma forma que sus equivalentes de la clase
CheckBox.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

82

82

Mens (VII)
Mens emergentes
g
(mens
(
contextuales o Popup
p p)).
Se activan al hacer clic con el botn secundario en un control.
El contenedor ser en este caso un objeto de la clase
ContextMenuStrip.
ContextMenuStrip
9 Tambin hay que arrastrarlo a la bandeja de componentes.
9 Aunque en un formulario normalmente slo hay un men principal
(objeto
(obje
o de la
a clase
c ase MenuStrip),
e uSt p), puede haber
abe tantos
a os mens
e s
emergentes cmo se desee.
9 El objeto ContextMenuStrip contendr los elementos de men
(ToolStripMenuItem).
9 Para asociar el men emergente a un control o formulario, ser
necesario indicarlo en la propiedad ContextMenuStrip del control
o formulario.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

83

83

Mens (VIII)
El evento Opening se produce antes de que se abra el men contextual.
Se puede utilizar para aadir

distintas opciones a un men


contextual dependiendo
del control que se ha abierto.
9 La propiedad SourceControl de la clase ContextMenuStrip, permite guardar una
referencia al objeto sobre el que se abri el men emergente.

En el ejemplo
ejemplo, el mismo objeto ContextMenuStrip muestra tres mens
emergentes distintos, aunque con opciones compartidas.

El men emergente del


control TextBox1
muestra los elementos
Opcin 1 y Opcin 2

El men emergente del


control TextBox2
muestra los elementos
Opcin 1 y Opcin 3

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

El men emergente del


formulario muestra los
elementos Opcin 1,
Opcin 3 y Opcin 4

84

84

Mens (IX)
'Se supone que TextBox1, Textbox2 y Form1 tienen
'la propiedad ContextMenuStrip a ContextMenuStrip1.
'Tambin
Tambin existen los elementos de men Opcin1
Opcin1, Opcin2
Opcin2, Opcin3 y Opcin4
Private Sub ContextMenuStrip1_Opening(ByVal sender As System.Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles ContextMenuStrip1.Opening
If ContextMenuStrip1.SourceControl Is TextBox1 Then
'Limpia el contenido anterior del men
ContextMenuStrip1.Items.Clear()
ContextMenuStrip1.Items.Add(Opcin1ToolStripMenuItem)
ContextMenuStrip1.Items.Add(Opcin2ToolStripMenuItem)
ElseIf ContextMenuStrip1.SourceControl Is TextBox2 Then
ContextMenuStrip1.Items.Clear()
ContextMenuStrip1.Items.Add(Opcin1ToolStripMenuItem)
ContextMenuStrip1.Items.Add(Opcin3ToolStripMenuItem)
ElseIf ContextMenuStrip1.SourceControl Is Me Then
C
ContextMenuStrip1.Items.Clear()
S i 1
Cl
()
ContextMenuStrip1.Items.Add(Opcin1ToolStripMenuItem)
ContextMenuStrip1.Items.Add(Opcin3ToolStripMenuItem)
ContextMenuStrip1.Items.Add(Opcin4ToolStripMenuItem)
End If
End Sub
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

85

85

Formularios MDI
Aplicaciones SDI (Single Document Interface).

La aplicacin slo permite tener abierta una nica ventana al mismo tiempo (por ejemplo la
aplicacin WordPad).

Aplicaciones MDI (Multiple Document Interface).

Existe una ventana MDI primaria (padre) que acta como contenedor de ventanas MDI
secundarias (hijas).

9 Es til cuando una aplicacin requiere de varias ventanas de caractersticas generales o para navegar
entre las distintas ventanas de una aplicacin.

En algunas aplicaciones actuales (cmo Office 2007) se sigue un modelo similar al MDI:
9 La aplicacin mantiene varias ventanas de documento abiertas, aunque no existe una ventana
primaria contenedora.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

86

86

Formularios MDI (II)


Formulario MDI primario.
Un objeto de la clase Form con la propiedad IsMdiContainer a
True.

Formulario MDI secundario.


Un objeto de la clase Form cuya propiedad MdiParent apunta al
formulario MDI primario.

Abrir una ventana MDI secundaria.


Private Sub AbrirFormularioHijo()
Dim frm As New FormularioHijo
frm.MdiParent = Me
Static Dim numHijos As Integer
numHijos
Hij
+
+= 1
frm.Text = "Ventana " & numHijos
frm.Show()
End Sub

La clase FormularioHijo ya est creada


MdiParent apunta al formulario actual
Esta variable sirve para el ttulo
d
del
l f
formulario
l i hij
hijo.Se
S i
incrementa
t en 1
Nuevo ttulo de la ventana
Por ltimo se muestra el formulario

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

87

87

Formularios MDI (III)


Acceso a los formularios hijo.

Los formularios primarios guardan en la propiedad MdiChildren la coleccin de formularios


secundarios.
'Da color rojo a todos los formularios secundarios desde un formulario hijo
For Each frm As Form In My.Forms.frmAplicacinMDI.MdiChildren
frm.BackColor = Color.Red
N t
Next

La propiedad ActiveMdiChild de la clase Form devuelve una referencia al formulario hijo


activo o Nothing si no existe ningn formulario hijo activo.
El mtodo ActivateMdiChild(referenickFormularioHijo) activa una ventana
secundaria concreta.
El evento MdiChildActivate se desencadena cuando se abre un formulario secundario.
Cambia el ttulo del formulario primario cada vez que cambia el secundario
Private Sub Form1_MdiChildActivate(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.MdiChildActivate
If Me.ActiveMdiChild Is Nothing Then
Me.Text = "Aplicacin MDI"
Else
Me Text = "Aplicacin
Me.Text
Aplicacin MDI - " & Me
Me.ActiveMdiChild.Text
ActiveMdiChild Text
End If
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

88

88

Formularios MDI (IV)


El men Ventana.

E
En ocasiones
i
las
l aplicaciones
li i
MDI presentan
t una opcin
i de
d men
para
administrar los formularios hijo.
Para que en ese men aparezca una lista con todas las ventanas
secundarias, es necesario indicar al objeto MenuStrip de la ventana
padre en que elemento aparecer la lista de ventanas mediante la
propiedad MdiWindowsListItem.

9 Normalmente se tratar de un men de primer nivel (p.e. el men Ventana).

Para organizar las ventanas secundarias se utiliza el mtodo


LayoutMdi de la clase Form.
Form
9 Organizacin en cascada.

Me.LayoutMdi(MdiLayout.Cascade)

9 Organizacin en mosaico horizontal.

Me LayoutMdi(MdiLayout TileHorizontal)
Me.LayoutMdi(MdiLayout.TileHorizontal)

9 Organizacin en mosaico vertical.

Me.LayoutMdi(MdiLayout.TileVertical)

9 Organiza los iconos de las ventanas en el caso de que estn minimizadas.


Me.LayoutMdi(MdiLayout.ArrangeIcons)

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

89

89

Formularios MDI (V)


Combinacin de mens.
Los mens del formulario secundario activo se combinarn con el del
formulario contenedor.
9 La propiedad AllowMerge de la clase Form posibilita o impide la
combinacin de mens.
9 La propiedad MergeAction especifica el tipo de combinacin que se
utilizar.
o Su valor es un miembro del enumerado MenuAction:
Append. Los elemento del formulario secundario se aaden al final de los
del formulario contenedor.
Insert. Inserta el elemento en el formulario contendor en la posicin
indicada por la propiedad MergeIndex.
Replace. Reemplaza el elemento coincidente (el que tenga el mismo texto
en la etiqueta).
Remove. Elimina los elementos que tengan el mismo nombre.
MatchOnly. Realiza alguna accin si los elementos coinciden. La accin a
realizar depender de los elementos de los submens o del valor
MergeAction del otro elemento coincidente.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

90

90

Formularios MDI (VI)


Men del contendor
Archivo
(MergeAction=Append; MergeIndex = -1)

Men ventana secundaria


Archivo
(MergeAction=MatchOnly; MergeIndex = -1)

Nuevo
(MergeAction=Replace; MergeIndex = -1)

Nuevo
(MergeAction=MatchOnly; MergeIndex = -1)

Abrir...
(MergeAction=Append; MergeIndex = -1)

Abrir...
(MergeAction=Replace; MergeIndex = -1)

Guardar...
G
d
(MergeAction=Append; MergeIndex = -1)
Salir
(MergeAction=Append; MergeIndex = -1)
Ventana
(MergeAction=Append; MergeIndex = -1)
Cerrar todo
(MergeAction=Append; MergeIndex = -1)
Ayuda
(MergeAction=Append; MergeIndex = -1)
Contenido
(MergeAction=Append; MergeIndex = -1)
Buscar
(MergeAction=Append; MergeIndex = -1)
Acerca de...
(MergeAction=Append; MergeIndex = -1)

Guardar...
(MergeAction=Replace; MergeIndex = -1)
Cerrar
(MergeAction=Insert; MergeIndex = 3)
Edicin
((MergeAction=Insert;
g
; MergeIndex
g
= 1))
Deshacer
(MergeAction=Append; MergeIndex = -1)
Ayuda
(MergeAction=MatchOnly; MergeIndex = -1)
ndice
(MergeAction=Insert; MergeIndex = 1)
Acerca de...
(MergeAction=Remove; MergeIndex = -1)

Men resultante
Archivo
Combinacin de ambos
Nuevo
Abrir
Guardar
Cerrar
Salir
Edicin
De la ventana secundaria
Deshacer
Ventana
Del contenedor
Cerrar todo
Ayuda
Combinacin de ambos
Contenido
ndice
Buscar

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

91

91

Formularios MDI (VII)


Aplicacin de ejemplo.

Slo ser capaz de crear nuevas


ventanas, cerrarlas y organizarlas.
El formulario principal slo tendr el
men archivo con dos opciones de
men:

9 Cada vez que se da la opcin Nuevo


del men Archivo se abrir una
nueva ventana con el ttulo Ventana
xxx.
9 La opcin Salir del men Archivo
terminar la aplicacin.

La ventana secundaria tendr los


mens Archivo y Ventana
Ventana.

9 El men archivo se combinar con el


de la ventana principal y aadir la
opcin Cerrar que cerrar la
ventana.
9 El men ventana tendr como
opciones:
p
o
o
o

Cerrar todo. Cierra todas las


ventanas.
Una lista de las ventanas abiertas.
Una opcin Organizar con
submens para organizar las
ventanas en cascada, en mosaico
horizontal, mosaico vertical u
organizar iconos.
iconos

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

92

92

Formularios MDI (VIII)


'Cdigo del formulario principal
'Este evento se produce al intentar cerrar el formulario principal
Private Sub frmAplicacinMDI
frmAplicacinMDI_FormClosing(ByVal
FormClosing(ByVal sender As Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) _
Handles Me.FormClosing
'Si existen hijos abiertos
If Me.MdiChildren.Length <> 0 Then
'Se preguna si se desea seguir cerrando
If MessageBox.Show("Todava quedan ventanas abiertas Desea continuar", _
"Aplicacin MDI", MessageBoxButtons.YesNo, _
MessageBoxIcon.Exclamation, _
MessageBoxDefaultButton.Button2) = _
Windows.Forms.DialogResult.No Then
'Si no se quiere cerrar la aplicacin
'la propiedad Cancel del evento se pone a True,
'por lo que se cancela la operacin de cierre
e.Cancel = True
End If
End If
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

93

93

Formularios MDI (IX)


'Cuando se activa un formulario MDI hijo
Private Sub frmAplicacinMDI_MdiChildActivate(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.MdiChildActivate
Si no hay ningn formulario segundario
'Si
If Me.ActiveMdiChild Is Nothing Then
Me.Text = "Aplicacin MDI
'De esta forma no se muestra el men ventana cuando no hay ventanas hijas
VentanaToolStripMenuItem.Visible = False
Else
Si no se pone el ttulo del formulario seguido del nombre de la ventana
'Si
Me.Text = "Aplicacin MDI - " & Me.ActiveMdiChild.Text
'De esta forma se muestra el men ventana cuando hay ventanas hijas
VentanaToolStripMenuItem.Visible = True
End If
End Sub
p
_Click(ByVal
( y
sender As System.Object,
y
j
, _
Private Sub NuevoToolStripMenuItem
ByVal e As System.EventArgs) Handles NuevoToolStripMenuItem.Click
Dim frm As New frmFormularioHijo
frm.MdiParent = Me
Static numHijos As Integer
'numHijos lleva un contador permanente
'
de ventanas secunarias
numHijos += 1
frm.Text = "Ventana " & numHijos 'El ttulo de la ventana incluy el numHijos
frm.Show()
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

94

94

Formularios MDI (X)


'Cdigo del formulario secundario
Private Sub MosaicohorizontalToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MosaicohorizontalToolStripMenuItem
MosaicohorizontalToolStripMenuItem.Click
Click
My.Forms.frmAplicacinMDI.LayoutMdi(MdiLayout.TileHorizontal)
End Sub
Private Sub MosaicoverticalToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As System
System.EventArgs)
EventArgs) _
Handles MosaicoverticalToolStripMenuItem.Click
My.Forms.frmAplicacinMDI.LayoutMdi(MdiLayout.TileVertical)
End Sub
Private Sub CascadaToolStripMenuItem
CascadaToolStripMenuItem_Click(ByVal
Click(ByVal sender As System
System.Object,
Object _
ByVal e As System.EventArgs) _
Handles CascadaToolStripMenuItem.Click
My.Forms.frmAplicacinMDI.LayoutMdi(MdiLayout.Cascade)
End Sub
Private Sub OrganizarIconosToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles OrganizarIconosToolStripMenuItem.Click
My.Forms.frmAplicacinMDI.LayoutMdi(MdiLayout.ArrangeIcons)
End S
Sub
b

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

95

95

Formularios MDI (XI)


Private Sub CerrarTodooolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles CerrarTodoToolStripMenuItem
CerrarTodoToolStripMenuItem.Click
Click
'Recorre todos los formularios de la ventana contenedora
'y los cierra
For Each frm As Form In My.Forms.frmAplicacinMDI.MdiChildren
frm.Close()
Next
End Sub
Private Sub CerrarToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles CerrarToolStripMenuItem
CerrarToolStripMenuItem.Click
Click
'Cierra la ventana actual (es decir el formulario hijo activo
Me.Close()
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

96

96

Cuadros de dilogo comunes


Windows ofrece una serie de cuadros de dilogos comunes que puede utilizar
cualquier aplicacin Windows.
Windows
Desde .NET es posible acceder a los siguientes cuadros de dilogos:

Abrir archivo (clase OpenFileDialog).


Seleccionar carpeta (clase FolderBrowserDialog).
Guardar como (clase SaveFileDialog).
Colores (clase ColorDialog).
Fuentes (clase FontDialog).
Imprimir (clase PrintDialog).
Configurar pgina (clase PageSetupDialog).
Vista previa (clase PrintPreviewDialog).

Todas las clases tienen los siguientes miembros comunes:


Mtodo
odo S
ShowDialog().
o
a og() Muestra
u
a el cuadro
uad o y devuelve
d u
DialogResult.Ok
a og esu t.O o
DialogResult.Cancel dependiendo del botn que pulse el usuario.
Mtodo Reset() que restaura todas las propiedades a su valor por omisin.

Los cuadros de dilogos no realizan por si ninguna accin, slo sirven para
seleccionar valores que, mediante propiedades, se utilizarn ms tarde.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

97

97

Cuadro de dilogo OpenFileDialog


Muestra el tpico cuadro de dilogo para seleccionar uno o varios
archivos.
hi
Se utiliza para seleccionar un archivo.
En principio, aparecen todos los archivos de la carpeta inicial o la que
indique la propiedad InitialDirectory.
InitialDirectory

La propiedad Title permite especificar el ttulo del cuadro de


dilogo, por omisin aparecer la cadena Abrir.
Recuperar el archivo seleccionado.
La propiedad FileName guarda el nombre del archivo seleccionado.
Si se escribe directamente el nombre del archivo en el cuadro de texto
correspondiente es posible detectar si el archivo o la carpeta existe
mediante
di t las
l propiedades
i d d lgicas
l i
Ch kFil E i t y
CheckFileExist
CheckPathExist.
9 Si estn a True, se detectar si existe ese nombre de archivo o carpeta al
pulsar el botn Aceptar del cuadro de dilogo.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

98

98

Cuadro de dilogo
OpenFileDialog
Ope
e a og (
(II)
)
Filtrar los archivos seleccionados.
La propiedad Filter permite aadir elementos a la lista de tipos de
archivos.
9 El valor de esa propiedad ser una cadena con el siguiente formato:
o T
Texto1|filtro1|Texto2|filtro2.
1|fil 1|T
2|fil 2
o Para que aparezcan todos los archivos, archivos txt o algunos archivos grficos:
OpenFileDialog1.Filter = "Todos los archivos (*.*) |*.*|" & _
"Archivos de texto (*.txt) |*.txt| " & _
"Archivos grficos |*
|*.gif;*.bmp;*.jpg
gif;* bmp;* jpg

La propiedad FilterIndex permite decidir mediante un nmero


entero el ndice del tipo de archivo que aparecer inicialmente.

La propiedad ShowReadOnly es un valor lgico que permite que


aparezca la casilla de verificacin Abrir como slo lectura.
La propiedad ReadOnlyChecked permitir recuperar el valor
por el usuario en esa casilla para
p
su posterior
p
proceso.
p
introducido p

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

99

99

Cuadro de dilogo
OpenFileDialog
Ope
e a og (
(III)
)
Seleccin mltiple.
p
La propiedad Multiselect permite seleccionar mltiples archivos
del cuadro de dilogo.
En este caso los archivos seleccionados se cargan en un array de
cadena
d
representado
d por la
l propiedad
d d FileNames.
Ejemplo: carga en un ListBox nombres de los archivos
seleccionados.
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
'Recorre todos los elementos del array FileNames
For Each str As String In OpenFileDialog1.FileNames
'FileNames contiene la especificacin completa del archivo
'P
'Para
obtener
bt
slo
l el
l nombre,
b
troceo
t
la
l cadena
d
con Split
S lit
Dim aux() As String = str.Split("\")
'y me quedo con el ltimo elemento del array resultante
ListBox1.Items.Add(aux(aux.GetUpperBound(0)))
Next
End If
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

100

100

Cuadro de dilogo
OpenFileDialog
Ope
e a og (
(IV)
)
Ejemplo: seleccionar un
archivo grfico y cargarlo en
un control PictureBox.

Private Sub Cargar_Click(ByVal


Cargar Click(ByVal sender As System
System.Object,
Object _
ByVal e As System.EventArgs) Handles Cargar.Click
OpenFileDialog1.Filter = "Todos los archivos (*.*)|*.*|" & _
"Archivos grficos|*.bmp;*.gif;*.jpg;*.png"
OpenFileDialog1.FilterIndex = 1
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
Else
PictureBox1.Image = Nothing
End If
End Sub
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

101

101

Cuadro de dilogo
FolderBrowserDialog
o de
o se
a og
Permite seleccionar una carpeta a partir de un cuadro de dilogo
estndar.
estndar
La propiedad SelectedPath devuelve el nombre de la carpeta
seleccionada.
posible
b activar
a a u ocultar
o u a el botn
bo Nueva
u a carpeta
a p a mediante
da
la
a
Es po
propiedad ShowNewFolderButton.
La carpeta inicial ser la que indique la propiedad RootFolder.
Puede tomar alguno de los valores de la enumeracin
Environment SpecialFolder:
Environment.SpecialFolder:
9
9
9
9
9
9
9

Desktop. El escritorio.
MyComputer. Mi PC.
Personal. Mis documentos.
MyMusic Mi msica.
MyMusic.
msica
MyPictures. Mis imgenes.
ProgramFiles. Archivos de programa

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

102

102

Cuadro de dilogo SaveFileDialog


Similar al cuadro Abrir archivo pero con distinta funcionalidad.
Se utiliza para dar un nombre a un archivo.

Mantiene las propiedades Title, InitialDirectory,


Filename, Filter, FilterIndex.
No
N admite
d it multiseleccin.
lti l i
La propiedad Filenames pierde su sentido.

Las propiedades CheckFileExist, CheckPathExist,


ShowReadOnly y ReadOnlyCheck existen,
existen pero pierden su
utilidad.
Como nuevas propiedades tiene CreatePrompt y
OverwritePrompt
O
e
te o pt que a
avisan
sa ssi se va
a a ccrear
ea u
un a
archivo
c o nuevo
ue o o
se va a sobreescribir un archivo.
La propiedad DefaultExt permite incluir una cadena para la
extensin por omisin del archivo.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

103

103

Cuadro de dilogo ColorDialog


Permite seleccionar un color de la paleta.
p
Propiedad FullOpen.
Con un valor True, el cuadro de dilogo se abre con la paleta de
colores personalizados.
personalizados

Propiedad AllowFullOpen.
Con un valor True, permite a los usuarios elegir un color
personalizado.

La propiedad Color permite devuelve el color


seleccionado al pulsar el botn Aceptar.
Aceptar
If ColorDialog1.ShowDialog() = DialogResult.OK Then
Button5 BackColor = ColorDialog1
Button5.BackColor
ColorDialog1.Color
Color
End If
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

104

104

Cuadro de dilogo FontDialog


Permite seleccionar una fuente cuyas caractersticas devolver en la
propiedad Font que se puede asignar a la propiedad Font de
cualquier clase que disponga de ella.
If FontDialog1.ShowDialog() = DialogResult.OK Then
Label1 Font = FontDialog1
Label1.Font
FontDialog1.Font
Font
End If

En principio aparecen todas las fuentes, pero podemos seleccionar


g
en las propiedades:
p p
las deseadas mediante un valor lgico
AllowVectorFonts. Admite o no fuentes vectoriales.
AllowVerticalFonts. Admite o no fuentes verticales.
y Admite slo fuentes de p
paso fijo.
j
FixedPichOnly.

Las propiedades MaxSize y MinSize permiten definir el tamao


mximo y mnimo de la lista de tamaos de fuentes.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

105

105

Cuadro de dilogo FontDialog (II)


Caractersticas especiales.

La propiedad ShowEffects permite mostrar las casillas de verificacin


f
de subrayado y
tachado.
La propiedad ShowColor permite mostar y seleccionar de una lista de colores.
9 El color seleccionado ser recogido en la propiedad Color que ser necesario asignar
independientemente de la fuente seleccionada
seleccionada.
Label1.ForeColor = FontDialog1.Color

La propiedad ShowApply permite mostrar en el cuadro de dilogo el botn aplicar.

El evento Apply permitir controlar si se ha pulsado dicho botn y, mediante cdigo,


mostrar una vista previa de la nueva fuente.

...
Dim fuente As Font = Label1.Font 'Para poder recuperar la fuente si se pulsa Cancelar
If FontDialog1.ShowDialog() = DialogResult.OK Then
Label1.Font = FontDialog1.Font
Else
El
Label1.Font = fuente
'Si se pulsa Cancelar se vuelve a la fuente original
End If
...
Private Sub FontDialog1_Apply(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
System EventArgs) Handles FontDialog1
FontDialog1.Apply
Apply
Label1.Font = FontDialog1.Font
End Sub
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

106

106

Cuadro de dilogo PrintDialog


Permite especificar las propiedades de
un objeto PrinterSettings,
PrinterSettings
necesario para realizar una impresin.
Especificar que propiedades podemos
cambiar:

AllowPrintToFile. Habilita o
deshabilita la casilla de verificacin
Imprimir a un archivo.
AllowSelection. Habilita o
deshabilita el botn de radio Seleccin.
AllowSomePages. Habilita o
deshabilita el botn de radio Pginas
para imprimir slo un intervalo de
pginas.

PrintToFile. Devuelve un valor


lgico si est marcada la casilla de
verificacin.
verificacin
La propiedad PrinterSettings
devuelve el objeto
PrinterSettings modificado por el
cuadro de dilogo.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

107

107

Cuadro de dilogo PrintDialog (II)


Propiedades del objeto PrinterSettings.
PrinterName. Nombre de la impresora seleccionada.
Copies. El nmero de copias marcado en el cuadro Numero de
copias.
Collate. Devuelve o establece si se ha marcado la casilla de
verificacin intercalar.
PrintRange. Devuelve o establece el botn de radio marcado
en ell intervalo
i t
l de
d impresin.
i
i
9 Puede tomar alguno de los siguientes valores:
o PrintRange.AllPages.
o PrintRange.Selection.
PrintRange Selection.
o PrintRange.SomePages.

FromPage. Devuelve o establece la pgina inicial.


ToPage.
g Devuelve o establece la p
pgina
g
final.
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

108

108

Introduccin a la impresin

Para poder trabajar con las clases de impresin es


necesario importar el espacio de nombres al comienzo
del cdigo:
Imports System.drawing.printing

Para realizar la impresin es preciso seguir los siguientes


pasos:
pasos

Crear y definir un objeto PrintDocument.


9 Se puede crear arrastrndolo desde la caja de herramientas
a la bandeja de componentes o declarando una variable
PrintDocument a nivel de mdulo.

Crear y definir un objeto


j
PrinterSettings.
g
9 Se puede realizar a partir de la propiedad
PrinterSettings del cuadro de dilogo PrintDialog.
9 Las especificaciones de impresin del objeto
PrintDocument se tomarn a partir de este objeto
PrinterSettings.
9 El mtodo Print de la clase PrinterSettings
comenzar la impresin.

If PrintDialog1.ShowDialog() = DialogResult.OK Then


PrintDocument1.PrinterSettings
g = PrintDialog1.PrinterSettings
g
g
PrintDocument1.Print()
End If
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

109

109

Introduccin a la impresin (II)


El contenido de lo que se va a imprimir se debe realizar dentro del
evento PrintPage
g de la clase PrintDocument.
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles PrintDocument1.PrintPage
...
End Sub

PrintPage recibe un argumento de la clase


PrintPageEventArgs que se utiliza para tomar las caractersticas
de la pgina

y el objeto Graphics que se imprimir.

e.MarginBounds. Rectngulo con los mrgenes de la pgina.


e.PageBounds. Rectngulo con los lmites fsicos de la pgina.
e.HasMorePages.
H M
P
Valor
V
l lgico
l i que indica
i di sii hay
h o no ms
pginas
i
a
imprimir.
e.PageSettings. Configuracin de la pgina para la pgina actual.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

110

110

Introduccin a la impresin (III)


e.Graphics permite definir lo que se va a imprimir con los mtodos DrawXXX
de la clase Graphics.
G
hi
e.Graphics.DrawString(cadena,fuente,pincel,X,Y).
9 Imprime la cadena con la fuente seleccionada y el color del pincel seleccionado en la posicin
de la pgina X,Y.

e.Graphics.DrawImage(image,X,Y,ancho,alto).
9 Imprime el objeto Image especificado en la posicin X e Y de la pgina con un ancho y alto
especfico.

'Imprime el contenido de TextBox1


Private
ate Sub PrintDocument1
t ocu e t _PrintPage(ByVal
t age( y a sender
se de As
s System.Object,
Syste .Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles PrintDocument1.PrintPage
Dim margenIzq As Single = e.MarginBounds.Left
Dim margenSup As Single = e.MarginBounds.Top
e.Graphics.DrawString(TextBox1.Text,
G
hi
D
St i (T tB 1 T t M
Me.Font,
F t B
Brushes.Black,
h
Bl k _
margenIzq, margenSup)
End Sub
9 En http://msdn.microsoft.com/en-us/library/xdt36c58.aspx se puede encontrar informacin
adicional sobre la impresin.
impresin

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

111

111

Introduccin a la impresin (IV)


Ejemplo: aadir al ejemplo de la dispositiva 99 un botn para
imprimir la imagen.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

112

112

Introduccin a la impresin (V)


Imports System.Drawing.Printing
...
P i t S
Private
Sub
b I
Imprimir_Click(ByVal
i i Cli k(B V l sender
d
A
As S
System.Object,
t
Obj t _
ByVal e As System.EventArgs) Handles Imprimir.Click
PrintDialog1.AllowPrintToFile = False
PrintDialog1.AllowSelection = False
PrintDialog1.AllowSomePages = False
PrintDialog1.PrinterSettings = New PrinterSettings
If PrintDialog1.ShowDialog() = DialogResult.OK Then
PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
Try
PrintDocument1.Print()
Catch ex As Exception
MessageBox.Show("Error de impresin", "Imprimir imagen", _
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
End If
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(PictureBox1.Image, e.MarginBounds.Left, e.MarginBounds.Top, _
e.MarginBounds.Width,
g
, PictureBox1.Image.Height)
g
g )
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

113

113

Clase DateTimePicker
Proporciona un mecanismo para la introduccin de valores de tipo
D t Ti
DateTime.
Presenta el aspecto de una lista deplegable que se despliega como un
calendario.
Es posible limitar las fechas a visualizar mediante las propiedades MaxDate y
MinDate.
i

Obtener el valor.
La propiedad Text obtiene o establece una cadena con el valor que aparece en
el control.
La propiedad Value obtiene o establece un valor de tipo DateTime.
La propiedades Day, Month, Year, DayOfWeek, Hour, Minute, Second y
Millisecond devuelven las partes de la fecha.

Formato del control.


La propiedad Format permite establecer el formato de fecha y hora que se
visualiza.
Es posible mostrar un control para seleccionar horas marcando la propiedad
ShowUpDown a True y la propiedad Format a Time.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

114

114

Clase MonthCalendar
Muestra una interfaz grfica en forma de calendario mediante la que el usuario puede
manejar
j informacin
i f
i relativa
l ti a fechas.
f h

El nmero de meses que aparece se puede modificar mediante la propiedad


CalendarDimensions.

Permite obtener o establecer rangos de fechas.

La propiedad MaxSelectionCount permite determinar el nmero mximo de das


seleccionados.
La propiedades SelectionStart y SelectionEnd obtienen o establecen la fecha de
inicio y fin.
L propiedad
La
i d d SelectionRange establece
t bl
o devuelve
d
l un objeto
bj t de
d tipo
ti SelectionRange
que contiene dos fechas con el inicio y el fin del periodo.

'Selecciona el da actual y los tres siguientes


'y muestra las fechas de inicio y fin en etiquetas
MonthCalendar1.SelectionRange = _
New SelectionRange(Now(), Now().AddDays(3))
Label1.Text = MonthCalendar1.SelectionRange.Start
Label2.Text = MonthCalendar1.SelectionRange.End

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

115

115

Clase Timer
Implementa un temporizador que produce un evento en los
i
intervalos
l fijados
fij d por ell programador.
d
El evento Tick, se producir cada vez que se cumple el intervalo
previsto por el programador y el control est activado.
La propiedad Interval
I t
l permite fijar en milisegundos el intervalo
de tiempo.
La propiedad Enabled admite un valor lgico que permite activar o
desactivar el temporizador.
temporizador
'Muestra en Label1 un reloj que se actualiza cada milisegundo
Private Sub Timer1_Tick(ByVal
_
sender As Object, ByVal e As System.EventArgs) _
Handles Timer1.Tick
'Label1 muestra la hora del sistema actualizada
'La propiedad Interval se debe establecer a 1000
'La propiedad Enabled se debe establecer a True
Label1 Text = DateTime.Now.ToString(
Label1.Text
DateTime Now ToString("hh:mm:ss")
hh:mm:ss )
End Sub
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

116

116

Clase ToolTip
Muestra texto de ayuda cuando el curso se para sobre el control.
El control T
ToolTip
lTi se coloca en la bandeja de componentes.
componentes

Se puede usar un nico control ToolTip para todos los componentes del formulario.

9 En tiempo de diseo, para asociar un control con un ToolTip, en la ventana de propiedades


del control al que se quiere aadir el texto se introduce el texto en ToolTip en
ToolTip1.
9 En tiempo de ejecucin,
ejecucin se puede hacer mediante el mtodo SetToolTip.
SetToolTip
ToolTip1.SetToolTip(Button1, "Guardar cambios")

Propiedades que controlan el tiempo de retardo del control.

InitialDelay, tiempo en milisegundos que el usuario debe apuntar al control


asociado para que aparezca la informacin del control.
ReshowDelay, tiempo que tarda en aparecer el texto cuando el ratn de mueve
desde un control asociado a otro.
AutoPopDelay, tiempo durante el cual se muestra la informacin del control
asociado.
AutomaticDelay, permite establecer las dems propiedades en funcin del valor
asignado a esta propiedad:
9 Si AutomaticDelay tiene el valor N
o

InitialDelay se establece en N, ReshowDelay se establece en N/5 y AutoPopDelay se establece


en 5N.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

117

117

Clase TabControl
Muestra un formulario con mltiples fichas similares a las pestaas de
las carpetas.

Cada ficha puede tener varios controles.


Se utilizan para cuadros de dilogo con varias pginas (por ejemplo para
pginas de propiedades)
propiedades).

La propiedad TabPages hace referencia a una coleccin con las fichas.


Cada ficha es un objeto de tipo TabPages.
9 Cada objeto TabPage es un contenedor de otros controles.

Se pueden aadir en tiempo de diseo o en tiempo de ejecucin con el


mtodo Add.
TabControl1.TabPages.Add(New TabPage("Otra ficha"))

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

118

118

Clase TreeView
Muestra un conjunto de elementos organizado de
f
forma
jjerrquica.
i
Cada elemento es un objeto de la clase
TreeNode a la que se accede por medio de la
propiedad Nodes del elemento.

La propiedad Nodes del control TreeView


contendra una coleccin de nodos de tipo nodo
raz.
Cada nodo sera un objeto de la clase TreeNode
que a su vez tiene
ti
una coleccin
l i de
d nodos
d
representada tambin por su propiedad Nodes.
9 Cada nodo permite tener asociado un icono con la
propiedad ImageKey.
o

ImageKey es un nmero que hacer referencia a una


i
imagen
almacenada
l
d en un control
t l ImageList all que se
referencia por la propiedad ImageList.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

Coleccin Nodes de TreeView:


Raz01, Raz02 y Raz03
Coleccin Nodes de Raz01:
Elemento01,
Elemento01 Elemento02,
Elemento02
Elemento03.
Coleccin Nodes de Elemento02:
Elemento04, Elemento05.

119

119

Clase TreeView (II)


Aadir nodos mediante programacin.
Ell mtodo
d Add de
d la
l coleccin
l i Nodes permite
i aadir
di nodos.
d
9 Recibe como argumento una cadena con el nombre de la etiqueta o un objeto de la
clase TreeNode.
o Aade un nodo raz al objeto TreeView.
TreeView1 SelectedNode Nodes Add("Nuevo nodo")
TreeView1.SelectedNode.Nodes.Add("Nuevo
o Aade un nodo al nodo seleccionado.
Dim miNodo As New TreeNode("Nuevo nodo")
'La propiedad SelectedNode referencia al nodo seleccionado

TreeView1.SelectedNode.Nodes.Add(miNodo)
(
)

Eliminar nodos mediante programacin.


El mtodo Remove de la clase TreeNode elimina el nodo y sus nodos hijos.

Contenido de un nodo.
La propiedad
d d Text de
d la
l clase
l
TreeView muestra la
l etiqueta del
d l nodo
d
seleccionado.
La propiedad Text de la clase TreeNode muestra la etiqueta del nodo.
La propiedad FullPath de la clase TreeNode devuelve una cadena con la ruta
de acceso del nodo
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

120

120

Clase TreeView (III)


Ejemplo: Aadir y eliminar nodos mediante programacin.
El botn Aadir insertar un nuevo nodo a partir del nodo seleccionado con
la etiqueta del cuadro de texto.
9 Si la casilla de verificacin Nodo raz est activada, lo aadir como nodo raz.

El botn Eliminar quitar el nodo seleccionado y todos sus hijos


hijos.
9 Si el nodo tiene hijos, un cuadro de mensaje informar de la incidencia y
permitir cancelar la operacin.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

121

121

Clase TreeView (IV)


Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
If (Not CheckBox1.Checked) And (Not TreeView1.SelectedNode Is Nothing) Then
TreeView1.SelectedNode.Nodes.Add(TextBox1.Text)
Else
TreeView1.Nodes.Add(TextBox1.Text)
End If
End Sub
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked Then
TreeView1.SelectedNode = Nothing
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
If TreeView1.SelectedNode.GetNodeCount(True) <> 0 Then
If MessageBox.Show("El nodo tiene hijos Desea continuar?", _
"Eliminar un nodo",MessageBoxButtons.YesNo,
,
g
, MessageBoxIcon.Question,
g
Q
, _
MessageBoxDefaultButton.Button2)=Windows.Forms.DialogResult.Yes Then
TreeView1.SelectedNode.Remove()
End If
Else
TreeView1.SelectedNode.Remove()
End If
End Sub
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

122

122

Clase ListView
Muestra una lista de elementos
con iconos o encolumnado.
Puede mostrar cuatro vistas
mediante los valores de la
propiedad View:

LargeIcon.
SmallIcon.
List.
Details.

LargeIcon

SmallIcon

List

Details

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

123

123

Clase ListView (II)


Agregar
g g elementos.
Cada elemento es un dato de tipo ListViewItem.
Se pueden agregar en tiempo de diseo mediante el editor de la
propiedad Items de la ventana de propiedades.
9 Items hace referencia a una coleccin de ListViewItems.

En tiempo de ejecucin se aaden con el mtodo Add de la


coleccin ListViewItemsCollection.
'Aade
'A
d un elemento
l
t con l
la etiqueta
ti
t "El
"Elemento
t 1"
ListView1.Items.Add("Elemento 1")
Aade un nuevo elemento miItem
Dim miItem As New ListViewItem("Elemento 1")
ListView1 Items Add(miItem)
ListView1.Items.Add(miItem)
'Aade un nuevo elemento "Elemento 1",
'con el primer icono de la lista de imgenes.
ListView1.Items.Add("Elemento 2", 0)

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

124

124

Clase ListView (III)


Agregar
g g elementos en columnas.
El formato tabular slo est disponible con la propiedad View
establecida a Details.
Es necesario crear las colunmas mediante el editor de columnas
al que se accede mediante la propiedad Columns.
El contenido de la primera columna corresponde al elemento
ListViewItem.
9 Cada columna siguiente es un elemento de la coleccin SubItems
de la clase ListViewItem.
o Se p
puede contruir un ListViewItem con sus elementos a p
partir de un
array de cadenas.
Dim items() As String = New String() { _
TextBox1.Text, TextBox2.Text, TextBox3.Text}
st e . te s. dd( e ListViewItem(items))
st e te ( te s))
ListView1.Items.Add(New

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

125

125

Clase ListView (IV)


Referencia a los elementos.
Propiedad SelectedIndices. Devuelve una coleccin con los ndices
seleccionados.
9 Hay que tener en cuenta que se pueden seleccionar varios elementos.
o ListView1.SelectedIndices(0).Item,
( )
, devuelve un entero con el ndice el
primer elemento seleccionado.

Propiedad SelectedItems. Devuelve una coleccin de


ListViewItem con los elementos seleccionados.
o ListView1.SelectedItems(0).Text,
( )
, devuelve la etiqueta
q
del primer
p
elemento seleccionado.

Propiedad FocusedItem. Devuelve el ListViewItem que ha recibido


el foco.

Referencia a los subelementos.


subelementos
Se realiza a partir de la coleccin SubItems del elemento.
9 ListView1.SelectedItems(0).SubItems(0).Text, devuelve la
etiqueta de l a primer subelemento de la fila seleccionada.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

126

126

Clase ListView (V)


Control del elemento seleccionado.
Evento ItemActivate. Se produce cuando se activa un elemento.
Evento SelectedIndexChanged. Se produce cuando se cambia el
ndice del elemento seleccionado.
9 Se produce antes de ItemActivate.

Eliminacin de elementos.
Mtodo RemoveAt de la coleccin ListViewItemsCollection,
ListViewItemsCollection
indicndole el ndice del elemento a borrar.
ListView1.Items.RemoveAt(ListView1.SelectedIndices(0))

Mtodo Remove de la coleccin ListViewItemsCollection,


indicndole el elemento a borrar.
ListView1.Items.Remove(ListView1.FocusedItem)

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

127

127

Clase ListView (VI)


Ejemplo: Almacenar datos de personas en un control ListView.
Al pulsar el botn Aadir, se almacenarn los datos de los cuadros de texto en el
ListView.
Al pulsar el botn Borrar, se eliminar el elemento seleccionado.
Al pulsar sobre un elemento del ListView aparecern sus datos en los cuadros
de texto.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

128

128

Clase ListView (VII)


Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal
y
e As System.EventArgs)
y
g ) Handles Button1.Click
Dim items() As String = New String() { _
TextBox1.Text, TextBox2.Text, TextBox3.Text}
ListView1.Items.Add(New ListViewItem(items))
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
ListView1.Items.Remove(ListView1.FocusedItem)
End Sub
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ListView1.ItemActivate
Dim item As ListViewItem
item = ListView1.SelectedItems(0)
ListView1 SelectedItems(0)
TextBox1.Text = item.Text
TextBox2.Text = item.SubItems(1).Text
TextBox3.Text = item.SubItems(2).Text
End Sub

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

129

129

Clase ImageList
Se utiliza como contenedor de imgenes que podrn ser utilizadas
por otros controles a partir del ndice de cada imagen.
Se puede hacer referencia a un ImageList en los controles
ListView, TreeView, TabControl, Button, CheckBox,
RadioButton y Label.
En el control ListView la referencia a la lista de imgenes se hace
mediante las propiedades LargeImageList y SmallImageList.
En el resto, a partir de la propiedad ImageList.

La imgenes se gestionan en tiempo de diseo mediante el Editor


de la coleccin Images accesible por la propiedad Images del
ImageList.
La referencia a una imagen concreta de la seleccin se hace en cada
control por medio de la propiedad ImageIndex.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

130

130

Clase ToolStrip
Crea una barra de herramientas que puede contener botones, cuadros
de texto
texto, botones desplegables
desplegables, ComboBox,
ComboBox etiquetas o separadores
separadores.
Para agregar elementos en tiempo de diseo a la barra utiliza la coleccin
Items de la ventana de propiedades.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

131

131

Clase ToolStrip (II)


Elementos de ToolStrip.
Button (clase ToolStripButton).
9 Mediante la propiedad DisplayStyle podemos asociarle una imagen
(propiedad Image), un text (propiedad Text) o imagen y texto.
propiedad
p
ToolTipText
p
permite asociarle un texto con informacin de
p
9 La p
la herramienta.
9 El evento Click del control ToolStripButton permite controlar su
comportamiento.

Label (clase ToolStripLabel).


9 Representa texto y/o imgenes no seleccionables.
9 Presenta caractersticas similares al control Label.

SplitButton (clase ToolStripSplitButon).


9 Combina un botn
con un men
desplegable con las mismas posibilidades
que la clase ToolStripMenuItem, con las caractersticas ya apuntadas en
el apartado de mens.
9 Registra las acciones, tanto al pulsar sobre el botn, como al desplegar la
lista y seleccionar las opciones
opciones.
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

132

132

Clase ToolStrip (III)


Elementos de ToolStrip (continuacin).

DropDownButton (clase
( l
ToolStripDropDownButon).
)
9 Al pulsarlo muestra un men desplegable.
o El Click del botn slo despliega el men.

Separator (clase ToolStripSeparator).


ComboBox (clase ToolStripComboBox).

9 Representa un ComboBox, con caractersticas similares.

TextBox (clase ToolStripTextBox).

9 Representa
p
un TextBox con caractersticas similares.

ProgressBar (clase ToolStripProgressBar).


9 Representa una barra de progreso.

o Las propiedades Minimum y Maximum representan los valores mnimos de la


barra.
o La
L propiedad
i d d Value
l representa
t ell valor
l actual
t l de
d la
l barra.
b
o La propiedad Step representa el valor con el que se incrementar la barra de
progreso al ejecutar el mtodo PerformStep.
o El mtodo Increment, permite incrementar la propiedad Value al margen del
valor que tenga Step.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

133

133

Control StatusStrip
Barra de estado que muestra informacin sobre los objetos que se visualizan en un
formulario o de las acciones que se estn ejecutando
ejecutando.
Normalmente est compuesto de objetos ToolStripStatusLabel, aunque tambin
puede mostrar ToolStripDropDownButton, ToolStripSplitButton y
ToolStripProgessBar.
Para aadir estos controles se utiliza el editor de la coleccin de elemento StatusStrip.

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

134

134

Control StatusStrip (II)


Elemento ToolStripStatusLabel.

Propiedad Spring.
Spring

Propiedad BorderSides.

Propiedad BorderStyle.

9 Determina si la etiqueta ocupa todo el espacio disponible de la barra de estado.


9 Indica que bordes de la etiqueta se van a mostrar.
9 Tipo de borde que se va a mostrar.
mostrar

Ejemplo.

Muestra informacin sobre un botn al pasar el cursor sobre l.

Private Sub Button1_MouseHover(ByVal sender As Object, _


ByVal e As System.EventArgs) Handles Button1.MouseHover
'Al pasar el ratn sobre el botn se muestra el texto en la barra de estado
ToolStripStatusLabel1.Text = "Guardar los cambios"
End Sub
Private Sub Form2_MouseHover(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.MouseHover
'Es necesario para borrar el texto cuando se sale del botn
ToolStripStatusLabel1.Text = ""
End
d Sub
b

Universidad Pontificia de Salamanca (Campus Madrid)


Luis Rodrguez Baena, Escuela Superior de Ingeniera y Arquitectura, 2010

135

135

También podría gustarte