NET2_WinForm_Diseño_Aplicacion_Windows_Forms

135
Fundamentos de Interacción P Od d Persona-Ordenador 7. Diseño de una aplicación Windows Forms en VB.NET Luís Rodríguez Baena ([email protected]) Universidad Pontificia de Salamanca (campus Madrid) Escuela Superior de Ingeniería y Arquitectura

Transcript of NET2_WinForm_Diseño_Aplicacion_Windows_Forms

  • 1Fundamentos de Interaccin P O d dPersona-Ordenador

    7. Diseo de una aplicacin Windows Forms en VB.NET

    Lus Rodrguez Baena ([email protected])

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

  • 2Programacin en Windows

    Programacin convencional (lineal)g ( ) Acciones previsibles e independientes del entorno donde se

    ejecutan. Opciones de usuario limitadas a las posibilidades que el 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

    2

  • 3Programacin 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 identificador9 El SO administra todas las ventanas asignndolas un identificador. Eventos.

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

    sucesos. Mensajes.

    9 Cuando se produce un evento se enva un mensaje al sistema operativooperativo.

    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

    3

  • 4Programacin 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 linealproporcionadas de forma 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 j t li i b d t Al ejecutarse una aplicacin basada en eventos9 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 mensajes9 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 t l i i t j t l di di t

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

    4

    control y, si existe, ejecuta el cdigo correspondiente.

  • 5Programacin en Windows (IV)

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

    5

  • 6Programacin en Windows (V)

    Estructura de un procedimiento de evento.p Cada componente de Windows Forms tiene asociado una serie

    de eventos a los que responde.9 Los controladores de eventos tienen dos argumentos: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 i d l tinformacin del evento.

    9 El nombre corresponde con el nombre del control.9 La clusula Handles indica que mtodos de eventos estn

    asociados al procedimientoasociados al procedimiento.

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

    6

  • 7Programacin en Windows (VI)

    Private Sub MiEvento(ByVal sender As System.Object, _B V l A S t E tA )ByVal e As System.EventArgs) _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 ThenMessageBox.Show("Se ha pulsado MiBotn o MiBotn ha perdido el foco")

    ElseMessageBox.Show("Se ha pulsado OtroBotn")

    End IfEnd SubEnd Sub

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

    7

  • 8Programacin en Windows (VII)

    La instruccin AddHandler, permite asociar un evento a un controlador de eventos determinado, distinto del procedimiento de evento predeterminado.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 MiEventoAddHandler MiBotn Leave AddressOf MiEventoAddHandler MiBotn.Leave, AddressOf MiEventoAddHandler OtroBotn.Click, AddressOf MiEventoPrivate Sub MiEvento(ByVal sender As Object, _

    ByVal e As EventArgs) 'No lleva clasula HandlesMessageBox.Show("Se ha pulsado MiBotn " & g ( p _

    "u OtroBotn " & _"o MiBotn ha perdido el foco")

    If sender Is MiBotn ThenMessageBox.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 permite desactivar un controlador de eventos

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

    8

    La instruccin RemoveHandler, permite desactivar un controlador de eventos.RemoveHandler NombreObjeto.NombreEvento, AddressOf NombreControladorDeEventos

  • 9Aplicaciones 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.

    Uno por proyectoo Uno por proyectoo 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.Archivo FormX.Designer.vb.

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

    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

    9

  • 10

    Tareas comunes: texto

    Propiedad Text.E t bl bti l t t i d l t l Establece u obtiene el texto asociado al control.

    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 DomainUpDownRadioButton, NumericUpDown y 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, TopCenter , TopLeft, TopRight., g , p , p , 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

  • 11

    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 azulMe.BackColor = Color.FromKnownColor(KnownColor.Yellow) AmarilloOtroBotn.BackColor = Color.FromName("Green") 'Color de fondo verdeDim c As System.Drawing.Color = MiBotn.BackColorMessageBox.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

  • 12

    Tareas comunes: fuentes

    Propiedad Font. Hace referencia a un objeto S stem Dra ing Font Hace referencia a un objeto System.Drawing.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 = True no es vlido

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

    MiBotn.Font.Bold True no es vlidoMiBotn.Font = New Font(MiBotn.Font, FontStyle.Bold)

    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

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

    12

    Unit Obtiene la unidad de medida del objeto Font Un miembro de GraphicsUnit (Inch, Millimeter, Point,)

  • 13

    Tareas comunes: tamao y posicin

    Propiedad Location.p Hace referencia a una estructura de tipo System.Drawing.Point que identifica la posicin de la esquina superior izquierda del componente.qu a up o qu da d o po

    Estructura Point.9 Constructor: Point(X,Y).9 Propiedades X e Y.Propiedades X e Y.

    Se puede establecer en tiempo de diseo (ventana de propiedades) o de ejecucin.9 Ejemplo:9 Ejemplo:'Pone el botn en la esquina superior izquierda del formularioOtroBotn.Location = New Point(0,0)

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

    13

  • 14

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

    Propiedad Size.p Hace referencia a una estructura System.Drawing.Size.

    9 Constructor: Size(ancho,alto).9Miembros Width y Height.9Miembros Width y Height.

    Mtodo SetBounds()

    OtroBotn.Size = New Size(100, 50)MiBotn.Size = OtroBotn.Size

    Mtodo 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,0OtroBotn.SetBounds(0, 0, MiBotn.Size.Width, MiBotn.Size.Height)Iguala el tamao del formulario al de la pantallaMe.SetBounds(0, 0, Screen.PrimaryScreen.WorkingArea.Width, _

    Screen PrimaryScreen WorkingArea Height)

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

    14

    Screen.PrimaryScreen.WorkingArea.Height)

  • 15

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

    Propiedad Bounds.p Hace referencia a una estructura de tipo System.Drawing.Rectangle.9 Propiedades X, Y, Width y Height.Propiedades X, Y, Width y Height.

    Propiedad ClientSize.D l bj t i l t d l li t d l

    OtroBotn.Bounds = MiBotn.Bounds 'Pone a OtroBotn encima de MiBotn

    Devuelve un objeto Size con el tamao del rea cliente del 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)

    d li l l i l i

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

    15

    OtroBotn.Bounds = Me.ClientRectangle Hace lo mismo que lo anterior

  • 16

    Tareas comunes: tamao y posicin (IV)ta a o y pos c ( )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 SizeSize 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 Una estructura RectangleBounds 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 Un miembro de la enumeracin (ver tutorial del entorno) 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 planoBringToFront 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

  • 17

    Tareas comunes: manejo del teclado

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

    9 KeyDown9 KeyPress9 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.99Miembros 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

    ha procesado y no hay que hacer nada ms.

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

    17

    p y y q

  • 18

    Tareas comunes: manejo del teclado (II)a ejo de tec ado ( )

    Private Sub TextBox1 KeyPress(ByVal sender As Object, _ y ( y j , _ByVal e As System.Windows.Forms.KeyPressEventArgs) _Handles TextBox1.KeyPress

    'Procesa slo las teclas numricas y las teclas de controlIf Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then

    'El motor ignora la teclaEl motor ignora la teclae.Handled = True

    End IfEnd Sub

    Private Sub TextBox2 KeyPress(ByVal sender As Object,Private Sub TextBox2_KeyPress(ByVal sender As Object, _ByVal e As System.Windows.Forms.KeyPressEventArgs) _Handles TextBox2.KeyPress

    'Convierte los caracteres alfabticos a maysculasIf Char.IsLetter(e.KeyChar) Then

    'La propiedad SelectedText devuelve el texto seleccionadoLa propiedad SelectedText devuelve el texto seleccionado'Puede ser una cadena nula si no hay seleccionado ningn texto'En ese caso ser una cadena nula situada en la posicin del cursorTextBox2.SelectedText = Char.ToUpper(e.KeyChar)e.Handled = True

    End If

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

    18

    End IfEnd Sub

  • 19

    Tareas comunes: manejo del teclado (III)a ejo de tec ado ( )

    Eventos KeyUp y KeyDown.y p y y Permiten detectar las teclas especiales mediante el argumento e

    de la clase KeyEventArgs.9Miembros de KeyEventArgs: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 e As System.Windows.Forms.KeyEventArgs) y y y g ) _Handles TextBox2.KeyDown

    'Detecta si se ha pulsado la tecla Shift+F1If e.Shift And e.KeyCode = Keys.F1 Then

    MsgBox("Se ha pulsado Shift+F1")End If

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

    19

    End IfEnd Sub

  • 20

    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: Orden de procesamiento de eventos:1. MouseEnter.2. MouseMove.3 MouseHover/MouseDown-Click-3. MouseHover/MouseDown Click

    DoubleClick/MouseWheel.4. MouseUp.5. MouseLeave.

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

    20

    5. MouseLeave.

  • 21

    Tareas comunes: manejo del ratn (II)a ejo de at ( )

    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 Un miembro de la enumeracin MouseButtonsButton Obtiene el botn del ratn que se 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 Obtiene un recuento con signo que indica el nmero de Enterog qpasos de trinquete que ha girado la rueda del ratn. Un paso de trinquete es una muesca de la rueda del ratn.

    X Obtiene la coordenada x del ratn. Entero

    Y Obtiene la coordenada y del ratn. Entero

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

    21

  • 22

    Tareas comunes: control del foco de entradae t ada

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

    Lgico (True si se ha podido seleccionar el control o false enProgressBar, Splitter, Label, LinkLabel cuando no hay ningn

    enlace).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 Ninguno

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

    22

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

  • 23

    Tareas comunes: control del foco de entrada (II)( )

    Cuando un control entra en foco se producen los siguientes eventos:1. Enter.2. GotFocus.3. Leave.4. Validating.5. Validated.6. LostFocus.Private 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 positivof i ( 3 ) l ( 3 ) 0 hIf Not IsNumeric(TextBox3.Text) OrElse CInt(TextBox3.Text)

  • 24

    La clase Form

    Representa una ventana o cuadro de dilogo de la aplicacin. D d l t d i t d l i t f tili t d d Desde el punto de vista de la interfaz, se utilizar cmo un contenedor de

    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.N l t t d l d l i l di d l li i Normalmente contendr las declaraciones y el cdigo de la aplicacin.

    En el archivo Formx.designer.vbPartial Class Form1

    Inherits System.Windows.Forms.Form

    En el archivo Formx vb

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

    End Class

    En el archivo 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

  • 25

    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 paraz 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 muestraz Se produce la primera vez que se 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.E t t d l t li i d l t idz Este evento se puede usar para la actualizacin del contenido 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

  • 26

    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 d l f l i h did l fdatos del formulario que ha perdido el foco.5. Evento FormClosing().

    z Se produce cuando se da la orden de cerrar el formulario, pero antes de que se cierrede que se 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

  • 27

    Mover y cambiar el tamao del formularioo u a 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

    l d l facoplada a la parte inferior.

    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 pantallaMe.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 mismoMe.SetDesktopBounds(Screen.PrimaryScreen.WorkingArea.Width / 2, _

    Screen.PrimaryScreen.WorkingArea.Height / 2, _Screen PrimaryScreen WorkingArea Width / 2

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

    27

    Screen.PrimaryScreen.WorkingArea.Width / 2, _Screen.PrimaryScreen.WorkingArea.Height / 2)

  • 28

    Mover y cambiar el tamao del formulario (II)o u a o ( )

    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 d St tP iti D i iMiembros de StartPosition 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 l L i i d l f l i i d i d l i d d L iManual La posicin del formulario viene determinado por la propiedad Location

    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

    tiene las dimensiones especificadas en el tamao del formulario

  • 29

    Modificar el aspecto del formulario

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

    Propiedad Icon. Establece el icono de la barra de ttulos del formulario.

    Propiedades ControlBox MaximizeBox MinimizeBox Propiedades ControlBox, MaximizeBox, 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 O it Propiedad Opacity.

    Establece mediante un nmero real el nivel de transparencia de un formulario.9 De forma predeterminada el nivel de transparencia es de 1,00.

    P i d d Propiedad 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

  • 30

    Modificar el aspecto del formulario (II)o u a o ( )

    Propiedad FormBorderStyle. Permite tomar alguno de estos valores: 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 y pen la barra de herramientas de Windows.

    Sizable Con frecuencia se utiliza como ventana principal. Se le puede cambiar el tamao. Puede incluir unmen 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 V t d h i t d t i bl U t d h i t l b

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

    30

    SizableToolWindow Ventana de herramientas de tamao variable. Una ventana de herramientas no aparece en la barra de tareas ni en la ventana que aparece cuando el usuario presiona ALT+TAB.

  • 31

    Mostrar formularios

    Formulario de inicio. Se selecciona en la pgina

    Aplicacin del Diseador de proyectos.

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

    o Sub Main de un mdulo.9 Para aplicaciones Windows.

    o Cualquiera de los formularios deo 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 medianteejecucin mediante cdigo en el mtodo Main() mediante el mtodo Run del objeto Application.

    Sub Main()Dim frm As New Form1Application.Run(frm)

    End Sub

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

    31

    j pp

  • 32

    Mostrar formularios (II)

    Mostrar formularios secundarios no modales. Se debe crea una instancia del formulario y aplicar el mtodo Show() Se debe crea una instancia del formulario y aplicar el mtodo Show().

    'El proyecto incluye la clase Form3Dim frm As New Form3frm.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 Form3My.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 elShowDialog() 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

    o Al asignar esta propiedad, el formulario se cierra.

  • 33

    Mostrar formularios (III)

    Los formularios modales y no modales tienen distinto comportamiento: En los no modales al abrir con el mtodo Show contina el evento que ha realizado la llamada En los no modales, al abrir con el mtodo Show, contina el evento que ha realizado la 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 Form1Private Sub Button1 Click( )Private Sub Button1_Click()Dim frm As New Form2Dim r As DialogResult = frm.ShowDialog()Select Case rCase DialogResult.OK'Acciones cuando se pulsa AceptarAcciones cuando se pulsa Aceptar

    Case DialogResult.Cancel'Acciones cuando se pulsa Cancelar

    Case DialogResult.Retry'Acciones cuando se pulsa Reintentar

    End SelectEnd SelectEnd Sub'En el botn Aceptar de Form2

    Private Sub Button1_Click 'Esto tambin cierra el formulario

    Me.DialogResult = DialogResult.OK

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

    33

    End Sub

  • 34

    Compartir informacin entre formularioso 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 Form2MessageBox.Show(frm.TextBox1.Text)

    Se puede acceder a las variables pblicas del formulario modal desde el formulario que lo llama.'En Form2Public a As Integer 10Public a As Integer = 10'En Form1Dim frm As New Form2frm.ShowDialog()

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

    34

    'Accede al contenido de la variable a de form2MessageBox.Show("A = " & frm.a)

  • 35

    Compartir informacin entre formularios (II)o u a os ( )

    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 compartidavariable, hay que hacer que la variable sea compartida.

    'En Form1Public Shared otraVariable As Integer = 100

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

    'En Form2MessageBox.Show(Form1.otraVariable)

    Tambin se pueden poner las variables en un mdulo de cdigo.'En Module1Public MsVariables as Integer = 200'En Form1 o en Form2

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

    35

    MessageBox.Show(MsVariables)

  • 36

    Compartir informacin entre formularios (III)o u a os ( )

    Acceder a la informacin de un formulario por medio de My.Forms.i i i d d f l i l l My.Forms proporciona una instancia de cada formulario en el proyecto actual.

    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 se crea la instancia del9 La primera vez que se accede a un formulario con 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 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 devuelve una coleccin con todos los formularios de la aplicacin.p

    'Escribe en una etiqueta, el ttulo de todos los formularios abiertosFor Each frm As Form In My.Application.OpenForms

    Label1.Text = Label1.Text & " " & frm.Text

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

    36

    Label1.Text Label1.Text & & frm.TextNext

  • 37

    Compartir informacin entre formularios (IV)o u a os ( )

    Ejemplo: intercambiar informacin entre dos formularios con My.Forms.

    Public Class Form1'Cada vez que se pulsa el botn el contenido del textbox pasa a form2'Cada vez que se pulsa el 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.TextMy.Forms.Form2.Show()y ()

    End SubEnd Class

    Public Class Form2'Al cerrar Form2, el contenido del TextBox para a Form1Private Sub Form2_FormClosing(ByVal sender As Object, _

    ByVal e As _System.Windows.Forms.FormClosingEventArgs) _Handles Me.FormClosing

    My.Forms.Form1.TextBox1.Text = TextBox1.TextEnd Sub

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

    37

    End SubEnd Class

  • 38

    Clase Label

    Representa un campo de texto esttico.Propiedad Text Propiedad 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 TopLeft TopRight)MiddleRight, TopCenter, TopLeft, 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 NoneFixedSingle o 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.

    Si t i li t i i l t t d l ti t ti d ll do Si esta a True, visualiza puntos suspensivos si el texto de la etiqueta se extiende ms all de 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

  • 39

    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 enlace9 Se produce cuando se pulsa sobre el 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 sistemaShell("explorer http://www.micompania.es")

    End Sub

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

    39

    End Sub

  • 40

    Clase TextBox

    Representa un campo de texto editable por el usuario.p p p Propiedad Text.

    9 Permite obtener o establecer el texto del control. Propiedad TextAlign Propiedad 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.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 array de cadenas Lines.

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

    40

    y

  • 41

    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 permite convertir el texto en a Propiedad 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). 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

  • 42

    Clase TextBox (III)

    Autocompletar el contenido de un TextBox.La propiedad A t C l t M d permite indicar si queremos que se La propiedad AutoCompleteMode permite indicar si queremos que se autocomplete el contenido de los escrito en un TextBox:9 None, no se autocompleta.9 Append, al teclear los primeros caracteres aaden los que faltan.9 Sugest, despliega una lista con las posibles opciones a completar.g9 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 historial9 HistoryList Incluye los URL en la lista de 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 el9 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

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

    42

    AutoCompleteCustomSource.

  • 43

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

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

    43

    porcin de texto.

  • 44

    Clase TextBox (V)

    TextBox1.SelectionStart = 3

    TextBox1.SelectionLength = 10

    TextBox1.SelectedText = ""

    TextBox1.SelectionLength = 5TextBox1.Copy()TextBox1.SelectionStart = TextBox1.TextLengthTextBox1.Paste()

    TextBox1.SelectAll()

    TextBox1.Select(3, 5)T tB 1 C t()

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

    44

    TextBox1.Cut()

  • 45

    Clase Button

    Desciende de la clase System.Windows.Forms.ButtonBase, de la que tambin descienden la clase R di B tt y Ch kBtambin descienden la clase RadioButton y CheckBox.

    La propiedad Text, establece la etiqueta del control y permite asignar una tecla de acceso.

    Apariencia del botn. 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 propiedad BackgroundImage permite repetir una imagen a lo largo del rea p p g g p p g gque 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.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

  • 46

    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 .pngImage a partir de un archivo .bmp, .jpg, .ico, .gif, .wmf o .pngcontenido en disco.

    PictureBox1.Image = FromFile(C:\imgenes\MiImagen.jpg) Para eliminar dicho contenido hay que asignar a la propiedad Image de

    PictureBox el literal NothingPictureBox el literal 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: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 h L i d t l t d l t l

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

    46

    9 StretchImage. La imagen se adapta al tamao del control.

  • 47

    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 controldel 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 bi d d

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

    47

    Checked cambia de estado.

  • 48

    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 Standard. Aspecto tridimensional.o Flat. Aspecto plano.p po Popup. Aspecto plano hasta que el cursor pasa por encima.o System. Toma el aspecto predeterminado del sistema.

    Propiedad Appareance.9 Normal Toma el aspecto normal9 Normal. Toma el aspecto 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

  • 49

    Control RadioButton (III)

    Manejo del control.j 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.CheckedChangedIf radHombre.Checked Then

    Tratamiento = "Don"Tratamiento DonElse

    Tratamiento = "Doa"End If

    End Sub

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

    49

  • 50

    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

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

    50

    Estado inicial Primer Click Segundo Click Tercer Click

  • 51

    Clase CheckBox (II)

    El estado del control se puede obtener o establecer a travs de las i d dpropiedades:

    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 eventosCheckedChanged

    y CheckStateChanged

    Se desencadena el evento

    CheckStateChanged

    Se desencadenan los eventosCheckedChanged

    y CheckStateChanged

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

    51

  • 52

    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 Proporciona un valor entero representado por el cuadro de desplazamiento de la barra.

    Propiedades Minimum y Maximum. Valores mximo y mnimo permitidos en la barra.y p

    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

  • 53

    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 controlo a la derecha segn la orientacin del 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

    9 TopLeft. Las marcas aparecen arriba o a la izquierda.

  • 54

    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

  • 55

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

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

    55

  • 56

    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 numricoIf IsNumeric(TextBox1.Text) Then

    If TextBox1.Text < TrackBar1.Minimum Then'Si el valor es menor que el mnimo, se iguala al mnimoTextBox1 Text = TrackBar1 MinimumTextBox1.Text = TrackBar1.Minimum

    ElseIf TextBox1.Text > TrackBar1.Maximum Then'Si el valor es mayor que el mximo se iguala al mximoTextBox1.Text = TrackBar1.Maximum

    End If'Una vez que se tiene un valor correcto, se cambia'la propiedad value del TrackbarTrackBar1.Value = TextBox1.Text

    End IfEnd Sub

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

    56

    End Sub

  • 57

    Clases HScrollBar y VScrollBar

    Proporcionan barras de desplazamiento horizontal y ti lvertical.

    Se pueden utilizar para proporcionar desplazamiento en controles que no las incluyan o para asignar de forma grfica valores numricos.valores numricos.

    Existen dos controles: HScrollBar, barra de desplazamiento horizontal VScrollBar, barra de desplazamiento vertical 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 No se recomienda su uso para no confundir el control con las barras de desplazamiento incluidas en algunos controles. Es preferible utilizar el control TrackBar.

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

    57

    p

  • 58

    Clase NumericUpDown

    Proporciona un mecanismo para introducir valores numricos. Est formado por un cuatro de texto y dos flechas Est formado por un cuatro de texto y dos flechas.

    La propiedad Value establece o devuelve el valor del cuadro de texto asociado.p p 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 Propiedad Hexadecimal.

    Mtodos UpButton y DownButton. Realizan el mismo efecto que pulsar las teclas arriba o abajo.

    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

  • 59

    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 pueden insertar en tiempo de ejecucin mediante el mtodo Add de la coleccin Items.p p j 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 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

  • 60

    La clase ListBox

    Muestra una serie de elementos de los que el usuario qpuede seleccionar uno o ms.

    Los elementos incluidos en el control se guardan en la propiedad Items.propiedad Items. Items es una coleccin del tipo ListBox.ObjectCollection que puede incluir cualquier tipo de objeto utilizado en .NET.j

    Los elementos seleccionados se guardan en la propiedad SelectedItems, una coleccin del tipo ListBox.SelectedObjectCollection.ListBox.SelectedObjectCollection.

    Los ndices de los elementos seleccionados se guardan en la propiedad SelectedIndices, una coleccin del tipo ListBox SelectedIndexCollection

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

    60

    tipo ListBox.SelectedIndexCollection.

  • 61

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

    ListBox1.Items.Add("Elemento 01")ListBox1.Items.Add("Elemento 02")ListBox1.Items.Add("Elemento 03")ListBox1.Items.Add("Elemento 04")Li tB 1 It Add("El t 05")

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

    61

    .Add(objeto) ListBox1.Items.Add("Elemento 05")ListBox1.Items.Add("Elemento 06")

  • 62

    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 personaDi id A I tDim id As IntegerDim nombre As StringDim apellidos As StringSub New(ByVal id As Integer, ByVal ape As String, ByVal nom As

    String)Me.id = idMe.id idnombre = nomapellidos = ape

    End Sub'El mtodo toString permite convertir un objeto en una cadenaOverrides Function toString() As String

    Return apellidos & ", " & nombreEnd Function

    End Structure...lstPersonas.Items.Add(New persona(123, "Perez", "Pepe"))lstPersonas Items Add(New persona(323 "Juarez" "Ana"))

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

    62

    lstPersonas.Items.Add(New persona(323, "Juarez", "Ana"))lstPersonas.Items.Add(New persona(333, "Bartolomez", "Bartolo"))

  • 63

    Clase ListBox (IV)

    La coleccin Items.A l t l l i ( ti i ) Agregar elementos a la coleccin (continuacin).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 Eliminar elementos de la 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 t d it li i l t d l9 El mtodo RemoveAt permite eliminar un elemento de la coleccin a partir de su ndice.

    ObjetoListBox.Items.Remove(ndice)ListBox1.Items.RemoveAt(1)

    9 El mtodo Clear permite eliminar todos los elementos de la

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

    63

    pcoleccin.

  • 64

    Clase ListBox (V)

    Eliminar objetos de la lista Se puede pasar como argumento una referencia a un objeto de la lista Se puede pasar como argumento una referencia a un objeto de la 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)

    Si queremos buscar y borrar un elemento concreto habr que realizar una bsqueda.

    p ( )lstPersonas.Items.Remove(p) 'Elimina el segundo elemento de la lista

    Dim p As persona = New persona(323, "Juarez", "Ana")'Eli i l bj t (A J ) d l li t'Elimina el objeto p (Ana Juarez) de la lista 'a partir de la bsqueda de su identificador'Es necesario codificar la funcin Equal en la estructura PersonaFor Each obj As persona In lstPersonas.Items

    If obj.Equals(p) ThenlstPersonas.Items.Remove(obj)Exit For

    End IfNext...'En la estructura PersonaOverloads Function Equals(ByVal o As persona) As Boolean

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

    64

    Return o.id = idEnd Function

  • 65

    Clase ListBox (VI)

    La coleccin Items. La propiedad Count devuelve el nmero de elementos de la

    coleccin. Buscar elementos en la coleccin Buscar elementos en la 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 puestolstPersonas.Items.RemoveAt(lstPersonas.Items.IndexOf(obj))

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

    65

    ( ( j))

  • 66

    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 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 tid dconvertido a cadena.

    Eventos. Eventos Click y DoubleClick. Evento SelectedItemChanged Evento 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

  • 67

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

    iHandles ListBox1.SelectedIndexChangedTextBox1.Text = (ListBox1.SelectedItem)TextBox2.Text = (ListBox1.SelectedIndex)

    End Sub

    Private Sub lstPersonas SelectedIndexChanged(ByVal sender As System Object

    Al seleccionar una persona, aparece su identificador

    Private Sub lstPersonas_SelectedIndexChanged(ByVal sender As System.Object, _ByVal e As System.EventArgs) _

    Handles lstPersonas.SelectedIndexChangedDim p As persona = lstPersonas.SelectedItemTextBox3.Text = p.id

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

    67

    End Sub

  • 68

    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 l t l d lSHIFT o las teclas del 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

  • 69

    La clase ListBox (X)

    Coleccin Items

    ndice Objeto Estado de la seleccin0 Elemento 02 Seleccionado

    1 Nuevo elemento No seleccionado

    2 Elemento 04 Seleccionado

    3 El t 05 S l i d3 Elemento 05 Seleccionado

    4 Elemento 06 No seleccionado

    Coleccin SelectedItems

    ndice Objetoj

    0 Elemento 02

    1 Elemento 04

    2 Elemento 05

    Coleccin SelectedIndices

    ndice Objeto

    0 0

    1 2

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

    69

    1 2

    2 3

  • 70

    La clase ListBox (XI)

    Ejemplo: copiar los elementos seleccionados de un ListBox a otro l l l b C ial pulsar el botn Copiar:

    Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) _H dl B tt 1 Cli kHandles Button1.Click

    For Each elem As Object In ListBox1.SelectedItemsListBox2.Items.Add(elem)

    NextEnd Sub

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

    70

  • 71

    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

    d l l t d daaden los elementos ordenados. Barras de desplazamiento.

    9 La propiedad ScrollAlwaysVisible determina si se ver siembre la barra de desplazamientosiembre la barra de 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

    parcialmente.

  • 72

    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 El evento ItemCheck se produce cuando cambia el estado de alguno de sus elementos. Utiliza un argumento del tipo

    System.Windows.Forms.ItemCheckEventArgscon los siguientes miembros: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

  • 73

    Clase CheckedListBox (II)

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

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

    Mtodo GetItemCheckState(ndice). Permite obtener el estado del elemento.

    9 Devuelve CheckedState Checked CheckedState Unchecked o CheckedState Indeterminate9 Devuelve CheckedState.Checked, CheckedState.Unchecked o CheckedState.Indeterminate. Mtodo SetItemCheckState(ndice, estado).

    Permite establecer el estado del elemento a CheckedState.Checked, CheckedState.Uncheckedo CheckedState.Indeterminate.

    Debug.WriteLine(CheckedListBox1.GetItemChecked(0)) 'Escribe TrueDebug.WriteLine(CheckedListBox1.GetItemChecked(2)) 'Escribe False

    CheckedListBox1.SetItemCheckState(1, CheckState.Indeterminate)Debug.WriteLine(CheckedListBox1.GetItemCheckState(0))'Escribe CheckedDeb g W iteLine(CheckedListBo 1 GetItemCheckState(1))'Esc ibe Indete minate

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

    73

    Debug.WriteLine(CheckedListBox1.GetItemCheckState(1))'Escribe IndeterminateDebug.WriteLine(CheckedListBox1.GetItemCheckState(2))'Escribe Unchecked

  • 74

    Clase ComboBox

    Combina un cuadro de lista con un cuadro de texto DropDownStylecuadro de texto. Presenta la mayora de las propiedades,

    mtodos y eventos de ambos controles.9 No permite multiseleccin.9 No captura el evento DoubleClick.9 La p opiedad S l t dI d tambin

    DropDownStyleDropDown

    9 La propiedad SelectedIndex tambin vale -1 si el usuario est editando el texto.

    Propiedad DropDownStyle. DropDown. Un cuadro de lista

    desplegable en el que el usuario puede

    DropDownStyleDropDownList

    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 d d l l t9 Se puede acceder a los elementos 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.

    DropDownStyleList

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

    74

  • 75

    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 None, no se autocompleta.9 Append, al teclear los primeros caracteres aaden los que faltan.9 Sugest, despliega una lista con las posibles opciones a completar.9 SugestAppend, aade los caracteres 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. 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 ListItems. Especifica que los elementos de la lista son el origen.9 CustomSource Especifica que se utilizarn las cadenas que formen la propiedad

    AutoCompleteCustomSource

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

    75

    AutoCompleteCustomSource.

  • 76

    Clase ComboBox (III)

    AutocompleteSource

    FileSystem HistoryList, AllUrly RecentlyUsedList

    FileSystemDirectories ListItems

    Con AutoCompleteSource a CustomSource es necesario rellenar los elementos de

    CustomSource

    Con AutoCompleteSource a CustomSource es necesario rellenar los elementos de la coleccin personalizada en la propiedad AutoCompleteCustomSource

    AutocompleteMode AutocompleteMode.

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

    76

    Sugest Append SugestAppend

  • 77

    Mens

    Los mens se construyen a partir de la clase M St iMenuStrip. 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

  • 78

    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

    elementos de un men deben tener tecla de acceso rpido.p 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 distintodistinto.

    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

  • 79

    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

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

    A d d t t dit blo TextBox. Aparece como un cuadro de texto editable. 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

  • 80

    Mens (IV)

    Aspecto del men.P d t d l t d l t t l d l Para agregar un separador entre dos elementos de men, en el men contextual del 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 mediante cdigo es posible modificar la marca mediante la propiedad9 En tiempo de ejecucin, mediante 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 permiten modificar el estado de la verificacin al hacer clic9 La propiedad CheckOnClick, permiten modificar el estado de la verificacin al hacer 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 No debera ser posible acceder a aquellas opciones no disponibles: la interfaz debe mostrar pistas visuales.

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

    80

    o Tambin es posible que no se muestren las opciones mediante la propiedad Visible.

  • 81

    Mens (V)

    Teclas de mtodo abreviado. La propiedad ShortcutKeys permite asociar una tecla de mtodo abreviado al elemento de 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 elementos En el glifo ( ) de etiqueta inteligente del control MenuStrip y seleccionar 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

  • 82

    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 ArchivoEnd Sub

    Si se utilizan elementos de men con casillas de verificacin, los eventos CheckedChanged y CheckStateChanged permite

    ifi i h difi d t dverificar si se ha modificado su estado.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

  • 83

    Mens (VII)

    Mens emergentes (mens contextuales o Popup).g ( 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 ContextMenuStripContextMenuStrip.9 Tambin hay que arrastrarlo a la bandeja de componentes.9 Aunque en un formulario normalmente slo hay un men principal

    (objeto de la clase MenuStrip), puede haber tantos mens (obje o de a c ase e uSt p), puede abe a os e semergentes 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

  • 84

    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 el mismo objeto ContextMenuStrip muestra tres mens En el ejemplo, el mismo objeto ContextMenuStrip muestra tres mens

    emergentes distintos, aunque con opciones compartidas.

    El men emergente del control TextBox1

    muestra los elementos

    El men emergente del control TextBox2

    muestra los elementos

    El men emergente del formulario muestra los elementos Opcin 1,

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

    84

    Opcin 1 y Opcin 2 Opcin 1 y Opcin 3 Opcin 3 y Opcin 4

  • 85

    Mens (IX)

    'Se supone que TextBox1, Textbox2 y Form1 tienen'la propiedad ContextMenuStrip a ContextMenuStrip1.'Tambin existen los elementos de men Opcin1 Opcin2 Opcin3 y Opcin4Tambin existen los elementos de men Opcin1, Opcin2, Opcin3 y Opcin4Private 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 menContextMenuStrip1.Items.Clear()ContextMenuStrip1.Items.Add(Opcin1ToolStripMenuItem)ContextMenuStrip1.Items.Add(Opcin2ToolStripMenuItem)

    ElseIf ContextMenuStrip1.SourceControl Is TextBox2 ThenElseIf ContextMenuStrip1.SourceControl Is TextBox2 ThenContextMenuStrip1.Items.Clear()ContextMenuStrip1.Items.Add(Opcin1ToolStripMenuItem)ContextMenuStrip1.Items.Add(Opcin3ToolStripMenuItem)

    ElseIf ContextMenuStrip1.SourceControl Is Me ThenC S i 1 Cl ()ContextMenuStrip1.Items.Clear()ContextMenuStrip1.Items.Add(Opcin1ToolStripMenuItem)ContextMenuStrip1.Items.Add(Opcin3ToolStripMenuItem)ContextMenuStrip1.Items.Add(Opcin4ToolStripMenuItem)

    End If

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

    85

    End Sub

  • 86

    Formularios MDI

    Aplicaciones SDI (Single Document Interface). La aplicacin slo permite tener abierta una nica ventana al mismo tiempo (por ejemplo la 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 navegar9 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

  • 87

    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 La clase FormularioHijo ya est creadafrm.MdiParent = Me MdiParent apunta al formulario actual Static Dim numHijos As Integer Esta variable sirve para el ttulo

    Hij + 1 d l f l i hij S i t 1numHijos += 1 del formulario hijo.Se incrementa en 1frm.Text = "Ventana " & numHijos Nuevo ttulo de la ventanafrm.Show() Por ltimo se muestra el formulario

    End Sub

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

    87

  • 88

    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 hijoFor Each frm As Form In My.Forms.frmAplicacinMDI.MdiChildren

    frm.BackColor = Color.RedN t

    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

    Next

    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.MdiChildActivateIf Me.ActiveMdiChild Is Nothing Then

    Me.Text = "Aplicacin MDI"Else

    Me Text = "Aplicacin MDI - " & Me ActiveMdiChild Text

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

    88

    Me.Text = Aplicacin MDI - & Me.ActiveMdiChild.TextEnd If

    End Sub

  • 89

    Formularios MDI (IV)

    El men Ventana.E i l li i MDI t i d En ocasiones las aplicaciones MDI presentan una opcin de 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 lapadre 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 FormLayoutMdi de la clase 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

  • 90

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

  • 91

    Formularios MDI (VI)

    Men del contendor

    Archivo

    Men ventana secundaria

    Archivo

    Men resultante

    ArchivoArchivo(MergeAction=Append; MergeIndex = -1)

    Nuevo(MergeAction=Replace; MergeIndex = -1)

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

    G d

    Archivo(MergeAction=MatchOnly; MergeIndex = -1)

    Nuevo(MergeAction=MatchOnly; MergeIndex = -1)

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

    ArchivoCombinacin de ambos

    Nuevo

    Abrir

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

    Salir(MergeAction=Append; MergeIndex = -1)

    Ventana(MergeAction=Appen