Documentos de Académico
Documentos de Profesional
Documentos de Cultura
listas 5
Objetivo General:
Conocer y emplear el objeto Lista, sus propiedades, métodos, eventos y sus
diversas aplicaciones.
Objetivos Específicos:
1. Conocer la estructura de una lista para comprender su comportamiento.
2. Conocer y aplicar el uso de las propiedades, métodos y eventos de las
listas: ListBox y ComboBox.
3. Conocer los criterios de validación a considerar en las listas.
4. Aplicar algoritmos propios para el trabajo con los datos de una lista.
5. Comprender el manejo de listas multicolumna y multiselección.
Temas:
1. Estructura.
2. Propiedades y métodos básicos.
3. Validación de acciones en la lista.
4. Algoritmos aplicados a listas.
5. Listas multicolumna.
6. Listas multiselección.
Listas
En este capítulo revisaremos el control ListBox y ComboBox como base para la
comprensión del funcionamiento y comportamiento de las listas.
En Visual Basic .NET, las listas han cambiado ligeramente su manejo respecto de
versiones anteriores de Visual Basic (6.0 y anteriores).
Estructura
Las diferentes listas se encargan de contener elementos (items), lo que requiere
que nos podamos referimos individualmente a cada uno. Para esto la lista se
organiza considerando índices para cada uno de los elementos de la colección
contenida.
Jorge
Silvia
Giorgio
Carmen
María
Luis
Para este caso los datos en la lista se organizan como se muestra a continuación:
Indice ltenn
~---~
O Jc.rge
1 Silvia
2 Giorgio
3 Carmen
4 María
5 Luis
Liste
Luego, por ejemplo podemos referimos al tercer elemento con el índice (index) 2
o si no hay elementos duplicados por el Item Giorgio.
Propiedades y métodos básicos
ListBox
A continuación se muestran las propiedades, métodos y eventos del ListBox,
D
excluyendo las herencias provenientes de la clase control:
!~ ListBox
Propiedades
Descripción
(ListBox)
Reemplazado. Obtiene o establece el diseño de la imagen
de fondo para un ListBox tal como se define en la
Backaround lm,.,,elavout enumeración ímecetavout,
Obtiene o establece el tipo de borde que se dibuja
BorderStvle alrededor de ListBox.
Obtiene o estableoe el ancho de las columnas de un control
ColumnWidth ListBox de varias columnas.
Obtiene !Container que contiene Component.(Se hereda de
Container Comoonent).
Obtiene el ancho de las fichas entre los elementos del
CustomTabOffsets ListBox.
Obtiene o establece el origen de datos de este objeto
DataSource ListControl.(Se hereda de ListControl).
Obtiene o establece la propiedad que se va a mostrar para
DisplavMember este ListControl.{Se hereda de ListControl).
DrawMode Obtiene o establece el modo de dibuio del control.
Obtiene o establece IFormatProvider que proporciona el
comportamiento de formato personalizado. (Se hereda de
Formatlnfo ListControll.
Obtiene o establece los caracteres especificadores de
~rmato que indican cómo se va a mostrar un valor.(Se
FormatString hereda de ListControl).
Obtiene o estableoe un valor que indica si el formato se
aplica a la propiedad DisplayMember del ListControl.(Se
Formattinc:iEnabled hereda de ListControl).
Obtiene o establece el ancho por el que puede desplazarse
HorizontalExtent la barra de desplazamiento horizontal de un control ListBox.
Obtiene o establece un valor que indica si se muestra una
HorizontalScrollbar barra de desolazamiento horizontal en el control.
Obtiene o establece un valor que indica si el control debe
cambiar de tamaño para evitar que se muestre sólo una
lntegralHeight parte de los elementos.
ltemHeiaht Obtiene o establece el alto de un elemento de ListBox.
ltems Obtiene los elementos del control ListBox.
Obtiene o establece un valor que indica si el control ListBox
MultiColumn admite varias columnas.
Paddina Esta propiedad no es relevante oara esta clase.
Obtiene el alto combinado de todos los elementos del
PreferredHeiaht control ListBox.
Reemplazado. Obtiene o establece un valor que indica si el
texto que muestra el control apareoe de derecha a
RiahtToLeft Í7nUierda.
Propiedades
Descripción
(ListBox)
Obtiene o establece un valor que indica si la barra de
ScrollAlwavsVisible desolazamiento vertical se muestra siemore.
Reemplazado. Obtiene o establece el índice de base cero
Selectedlndex del elemento actualmente seleccionado en ListBox.
Obtiene una colección que contiene los índices de base
cero de todos los elementos actualmente seleccionados en
Selected Indices el control ListBox.
Obtiene o establece el elemento actualmente seleccionado
Selectedltem en el control ListBox.
Obtiene una colección que contiene los elementos
Selectedltems actualmente seleccionados en el control ListBox.
Obtiene o establece el valor de la propiedad miembro
especificada por la propiedad ValueMember.(Se hereda de
SelectedValue ListControl).
Obtiene o establece el método en el que se seleccionan los
SelectionMode elementos del control ListBox.
Obtiene o establece un valor que indica si los elementos del
Sorted control ListBox se ordenan alfabéticamente.
Reemplazado. Obtiene o busca el texto del elemento
Text actualmente seleccionado en el control ListBox.
Obtiene o establece el índice del primer elemento visible del
Toplndex control ListBox.
Obtiene o establece un valor que indica si el ListBox
reconoce y expande los caracteres de tabulación cuando
dibuja sus cadenas utilizando la matriz de enteros
UseCustomTabOffsets CustomTabOffsets.
Obtiene o establece un valor que indica si el control ListBox
puede reconocer y expandir los caracteres de tabulación al
userabstoos dibuiar sus cadenas.
Obtiene o establece la propiedad que se utilizará como
valor real para los elementos del ListControl.(Se hereda de
ValueMember ListControll.
Métodos
Descripción
(ListBox)
Mantiene el rendimiento mientras se agregan elementos al
control ListBox de uno en uno al impedir que se dibuje el
BeainUpdate control hasta aue se llame al método EndUpdate.
Anula la selección de todos los elementos del control
ClearSelected ListBox.
Crea un objeto que contiene toda la información relevante
necesaria para generar un proxy utilizado para comunicarse
CreateObjRef con un obieto remoto. (Se hereda de MarshalByRefObiect).
Reanuda el dibujo del control ListBox después de haber
EndUpdate sido suspendido cor el método BeainUpdate.
Sobrecargado. Determina si dos instancias de Object son
Eauals iauales. (Se hereda de Objact).
Sobrecargado. Busca el primer elemento del control ListBox
FindStrina aue comience oor la cadena esoecíficada.
Sobrecargado. Busca el primer elemento del control ListBox
FindStringExact que coincida exactamente con la cadena especificada.
Métodos
Descripción
(ListBox)
Sirve como función hash para un tipo concreto.
GetHashCode es apropiado para su utilización en
algoritmos de hash y en estructuras de datos como las
GetHashCode tablas hash. (Se hereda de Obiect).
GetltemHeight Devuelve el alto de un elemento del control ListBox.
Devuelve el rectángulo delimitador de un elemento del
GetltemRectanale control ListBox.
Devuelve la representación de texto del elemento
GetltemText especificado. (Se hereda de ListControl).
Recupera el objeto de servicio de duración actual que
controla la directiva de duración de esta instancia. (Se
GetLifetimeService hereda de MarshalBvRefObiecO.
Devuelve un valor que indica si el elemento especificado
GetSelected está seleccionado.
Sobrecargado. Devuelve el índice de base cero del
lndexFromPoint elemento en las coordenadas especificadas.
Obtiene un objeto de servicio de duración para controlar la
directiva de duración de esta instancia. (Se hereda de
lnitializeLifetimeService MarshalBvRefObiect ).
Activa o desactiva la selección del elemento especificado
SetSelected de un control ListBox.
Eventos
Descripción
(ListBox)
Se produce cuando cambia la propiedad
BackaroundlmaoeChanaed Backaroundlmaoe de la etiaueta.
Se produce cuando cambia la propiedad
Backaround lm,.,,eLavoutChanaed BackaroundlmaaeLavout.
Se produce cuando se hace clic en el control
Click ListBox.
Se produce cuando DataSource cambia.(Se hereda
DataSourceChanaed de ListControl).
Se produce cuando cambia la propiedad
DisplavMemberChanaed DisolavMember.(Se hereda de ListControl).
Agrega un controlador de eventos para escuchar el
evento Disposed en el componente.(Se hereda de
Disoosed Comoonenn.
Se produce cuando cambia la apariencia de un
Drawltem control ListBox dibuiado por el propietario.
Aparece cuando el control se enlaza a un valor de
Formal datos.(Se hereda de ListControl).
Se produce cuando el valor de la propiedad
FormatlnfoChanaed Formatlnfo cambia.(Se hereda de ListControl).
Se produce cuando el valor de la propiedad
FormatStrinaChanned FormatStrina cambia.lSe hereda de ListControl\.
Se produce cuando el valor de la propiedad
FormattingEnabled cambia.(Se hereda de
FormattingEnabledChanged ListControl).
Se produce cuando se crea un control ListBox
dibujado por el propietario y se determina el
Measureltem tamaño de los elementos de la lista.
Aparece cuando el usuario hace clic en el control
MouseClick ListBox con el puntero del mouse (ratón).
Eventos
Descripción
(ListBox)
Se produce cuando el valor de la propiedad
PaddinaChanaed Paddina cambia.
Paint Se oroduce cuando se dibuia el control ListBox.
Se produce cuando ha cambiado la propiedad
SelectedlndexChanged Selectedlndex.
Se produce cuando cambia la propiedad
SelectedValueChanaed SelectedValue.(Se hereda de ListControl).
TextChanaed Se oroduce cuando cambia la orooiedad Text.
Se produce cuando cambia la propiedad
ValueMemberChanaed ValueMember.lSe hereda de ListControll.
ComboBox
En el caso del ComboBox, este tiene un doble comportamiento: Como cuadro de
texto y como Lista. A continuación se muestran sus propiedades, métodos y
eventos, excluyendo los heredados de la clase control.
!~ ComboBox
Propiedades
Descripción
{ComboBox)
Obtiene o establece un System.Collections.Specialized.
StringCollection personalizado que se utilice cuando la
propiedad AutoCompleteSource se establezca en
AutoComoleteCustomSource CustomSource.
Obtiene o establece una opción que controla cómo
funciona la funcionalidad de autocompletar para el
AutoComoleteMode control ComboBox.
Obtiene o establece un valor que especifica el origen de
las cadenas completas utilizado para la función de
AutoComoleteSource autocomoletar.
Obtiene o establece el origen de datos de este objeto
DataSource ComboBox.
Obtiene o establece un valor que indica si el oodigo o el
sistema operativo controlarán las operaciones de dibujo
DrawMode de elementos de la lista.
Obtiene o establece el alto, en píxeles, de la parte de
DrooDownHeiaht ruadro desoleaable del ComboBox.
Obtiene o establece un valor que especifica el estilo del
DrooDownStvle aradro combinado.
Obtiene o establece el ancho de la parte desplegable de
DropDownWidth un cuadro combinado.
Obtiene o establece un valor que indica si el cuadro
DroooedDown oombinado está mostrando la oarte desoleaable.
FlatStvle Obtiene o establece la apariencia del ComboBox.
Obtiene o establece un valor que indica si el control
debe cambiar de tamaño para evitar que se muestre
lntearalHeiaht sólo una oarte de los elementos.
Obtiene o establece el alto de un elemento en el cuadro
ltemHeight oombinado.
Obtiene un objeto que representa la colección de los
ltems elementos aue contiene el ComboBox.
Propiedades
Descripción
(ComboBox)
Obtiene o establece el número máximo de elementos
(J.le se van a mostrar en la parte desplegable del
MaxDrooDown ltems ComboBox.
Obtiene o establece el número máximo de caracteres
posíojes en la parte modificable de un cuadro
Maxlenath oombinado.
Paddina Esta propiedad no es relevante para esta clase.
PreferredHeiaht Obtiene el alto preferido del ComboBox.
Reemplazado. Obtiene o establece el índice que
específica el elemento seleccionado actualmente.
Selected lndex
Obtiene o establece el elemento seleccionado
Selectedltem a:tualmente en el ComboBox.
Métodos
Descripción
(ComboBox)
Mantiene el rendimiento cuando se agregan elementos
BeainUodate al ComboBox de uno en uno.
Reanuda el dibujo del control ComboBox después de
EndUodate haber sido susoendido por el método BeoinUodate.
Busca el primer elemento del control ComboBox que
FindStrina comience cor la cadena esoecíficada.
Busca el elemento que coincide exactamente con la
FindSlrinaExact cadena esoecíficada.
Sirve como función hash para un tipo concreto.
GetHashCode es apropiado para su utilización en
algoritmos de hash y en estructuras de datos como las
GetHashCode tablas hash.
GetltemHeiaht Devuelve el alto de un elemento del control ComboBox.
Selecciona todo el texto de la parte editable del
SelectAII ComboBox.
Eventos
Descripción
(ComboBox)
Se produce cuando el valor de la propiedad
Backaround lm,.,,eChanaed Backaroundlmaae cambia.
Se produce cuando cambia la propiedad
BackgroundlmaaelayoutChanged Backgroundlmagelayout.
DataSourceChanaed Se produce cuando DataSource cambia.
Eventos
Descripción
(ComboBox)
Agrega un controlador de eventos para escuchar el
Disposed evento Disoosed en el componente.
DoubleClick Este evento no es relevante para esta clase.
Se produce cuando cambia la apariencia de un
Drawltem control ComboBox dibuíado por el propietario.
Se produce cuando se muestra la parte
DrooDown desoleoable de un ComboBox.
Aparece cuando la parte desplegable de
DropDownClosed ComboBox deia de ser visible.
Se produce cuando ha cambiado la propiedad
DropDownStvleChanaed DropDownStvle.
Se produce cada vez que hay que dibujar un
elemento de ComboBox dibujado por el usuario y
cuando los tamaños de los elementos de lista
Measureltem vienen determinados.
PeddinoChannAd Este evento no es relevante cara esta clase.
Se produce cuando vuelve a dibujarse el control
Paint ComboBox.
Se produce cuando ha cambiado la propiedad
SelectedlndexChanaed Selected lndex.
Se produce cuando se ha cambiado el elemento
seleccionado y se confirma el cambio en el
SelectíonChanoeCommítted ComboBox.
Aparece cuando el control ha dado formato al texto,
TextUodate oero antes de oue éste se muestre.
Adiciónde elementos
Los elementos en una lista se encuentran contenidos en la propiedad Item, la cual
puede ser modificada en tiempo de diseño en la ventana de propiedades, como se
muestra:
Propiedades .... q. X
ltems (Colección)
Considerar que el orden en que se digiten los datos será el orden para mostrarlos;
y se asignará un index a partir del O para el primer elemento.
Editor de la colección Cadena [1][8]
Escrib.c1 las cadenas en la colección (un<1 por línea):
Lima
Caj<1marca
rea
Loreto
Cuscol
I
.....
Aceptar ~ Cancelar
Selección
Los elementos de una lista pueden identificarse por su item (elemento) o por su
index (indice). Por tal motivo podemos obtener estas dos propiedades a partir de la
selección realizada por el usuario.
Lima
Caja marca
lea
Loreto
Cusco
Y el siguiente código:
Dim indice As Integer
Dim elemento As String
indice= ListBoxl.Selectedlndex()
elemento= ListBox1.Selecteditem
ListBoxl.Selectedinctex() = o
ListBoxl.Selecteditem "Lima" =
Se recomienda emplear Selectedlndex para estos casos, debido a que el índice es
único, sin embargo el elemento puede estar duplicado más de una vez en la lista;
en este caso se tomará el primero (el que tiene un menor index).
Conteo de elementos
Podemos emplear esta propiedad para ubicar el ultimo elemento en una lista,
considerando que el conteo de indices que inicia en O, el indice del último
elemento es el conteo de la lista menos l.
Por ejemplo, para seleccionar el último elemento de la lista por código podemos
emplear:
ListBoxl.Selectedindex = ListBoxl.Items.Count - 1
Borrartodoslos elementos
La manera de eliminar todos los elementos de la lista es empleando el método
clear de la colección ltems.
Por ejemplo para eliminar todos los elementos del listboxl debemos considerar el
siguiente código:
ListBoxl.Items.Clear()
Se recomienda emplear el método RemoveAt, por que el índice del dato en la lista
es único, sin embargo el elemento podría duplicarse y habría cierta confusión
cuando se intente eliminar un dato que se encuentre duplicado.
ListBoxl.Items.RemoveAt(ListBoxl.Selectedindex)
Modificaciónde elementos
Para poder modificar un elemento en particular de la lista, debemos poder
referirnos a el de manera exclusiva dentro de la colección items, y esto se logra
refiriendo el index (índice) del elemento que queremos modificar.
Para el ejemplo de la lista con algunos departamentos del Perú, para modificar el
elemento con índice 2 ("Jea") por otro departamento empleamos la siguiente línea
de código:
MsgBox(ListBoxl.Items(Z))
Podría, de manera similar, asignar el valor de este elemento a una variable tipo
String, como se muestra:
Para buscar datos en una lista debemos considerar los métodos FindStringExact o
FindString. El primero de estos permite ubicar un dato realizando una búsqueda.
exacta, y el segundo con una búsqueda aproximada. Ambos métodos nos retoman
un valor entero con el número del índice de la coincidencia encontrada.
lee
Loreto
Cu seo
Objetivo
Aplicar y comprender el uso de listas y sus operaciones básicas, con
criterios de validación para las diferentes acciones.
Procedimiento:
Cada opción es independiente, se sugiere agregar el botón, asociar código
e ir ejecutando y probando.
Modificar
Buscar
Mostrar
Salir 1)
11
End Class
12
11
1
100
Lista sin ordenar 22
232
2
30
7
9
1
100
11
12
Lista ordenada alfabéticamente de manera ascendente. 2
22
232
30
7
9
9
7
30
232
Lista ordenada alfabéticamente de manera descendente. 22
2
12
11
100
1
1
2
7
9
11
Lista ordenada numérica de manera ascendente. 12
22
30
100
232
232
100
30
22
12
Lista ordenada numérica de manera descendente. 11
9
7
2
1
En muchos casos se requiere el ordenamiento de los elementos de una lista. Este
ordenamiento se obtiene asignándole a la propiedad sorted en True, como se
muestra:
ListBoxl.Sorted = True
El ordenamiento de la lista en este caso es alfabético ascendente. Para otros casos
como se muestra en la tabla anterior, se requiere el uso de algoritmos de
ordenamiento que contemplen cada caso.
Procedimiento:
Agreg.ar
I· Elige el ordenamiento · 3
Ordena I
I Aceptar Cancelar
3. Codificar como se muestra:
End Class
Operaciones de manejo y desplazamiento de elementos en la lista
programando con teclas
En este ejemplo revisaremos como combinar el trabajo de listas con el manejo de
eventos para el control de las teclas.
Procedimiento:
Datos Numericos:
End Class
Listas multicolumna
El listBox tiene una propiedad que permite que los datos se muestren en múltiples
columnas. Como se muestra en el ejemplo:
234 343 4534
354 434 345
678 534 333
564 456 54
575 5675 234
87 675 654
756 45 3452
445 3456 53
34 3 43
Esta función a partir de la librería gráfica se toma el mayor ancho y lo retorna para
ser empleado como para la columna de la lista.
Luego función puede ser llamada directamente para ser asignada a la propiedad y
requiere como argumento la lista que será tomada en cuenta para el cálculo del
ancho. El llamado a esta es como se muestra a continuación:
ListBox1.Columnfilidth = AnchoColum(ListEox1)
Listas multiselección
Una lista multiselección es aquella que permite que muchos elementos puedan ser
seleccionados simultáneamente., como se muestra:
Select,onMode One
IE Si2e
Sorted
rebtndex
TabStop MultiExtericlecl
ListBoxl.GetSelected(x)
Procedimiento:
End Class
Preguntas de repaso
NÍlmero: Participante:
Descalificados:
................................................................................ ,
«
Eliminar
Result&dos Salir
Descalificados:
12 Jo1ge 32 Eduerdo
16 Ca1los 11 'Walle1
22 Mal'\uel
99 Luis
23 Felipe
))
«
1 (.Eliminar
,
:!
..
Resultactc.s Salir
Competencia L8J
I o Puesto : 12 Jorge
zo Puesto : 16 Carlos
30 Puesto : 22 Manuel
Aceptar I
La salida es controlada y se muestra un cuadro de dialogo de confirmación
si se intenta esta acción:
Competencia l'Jfl
'-,V ;salir?
Sí No
Validar el TextBox de Número, para que solo permita este tipo de datos y
con 2 cifras.