Introducción:
Aquí te muestro un par de ejemplos de cómo usar auto completar (mostrar datos
de unos elementos muestras escribes) tanto en un ComboBox como en un TextBox.
Nota:
Si necesitas dar esta funcionalidad a un ListBox (normalmente acompañado de un TextBox), te
sugiero que veas el artículo sobre este mismo tema
para las versiones anteriores de .NET.
En el código de ejemplo hay tres de las ocho formas permitidas, a saber:
1- Usando los elementos de la lista del ComboBox.
2- Usando un array de tipo String con los elementos a usar en auto completar.
3- Usando la lista de direcciones recientes (como las que muestra el Internet Explorer).
La primera, como es obvio, es la que se usa con un ComboBox, las otras dos
están aplicadas a cajas de texto.
Para activar la opción de auto completar, debes asignar básicamente dos
propiedades:
*AutoCompleteMode en la que indicamos cómo queremos que se muestre lo que se vaya
encontrando.
*AutoCompleteSource en la que le indicamos de dónde obtendrá los elementos a usar
mientras se escribe.
Si el valor de AutoCompleteSource es CustomSource, entonces
debemos asignar los elementos a usar en la colección AutoCompleteCustomSource.
En este ejemplo los valores de los elementos a usar están en un array de tipo
String, pero podían estar en cualquier otro sitio, e incluso los podríamos añadir uno a uno, por
medio del método Add de la colección correspondiente, pero en lugar de añadir uno a uno, los
añadimos todos de golpe con el método AddRange.
Crear el ejemplo
Para crear el ejemplo, (en VB o C#), añade un ComboBox y dos TextBox a un
formulario, y en el evento Load del formulario añade el código mostrado más abajo, que como de
costumbre está tanto para Visual Basic como para C#.
Recuerda que este código solo es válido para las versiones 2005 o superiores
de Visual Studio, si quieres tener esta funcionalidad en las versiones anteriores de .NET, debes
ver este otro artículo.
Espero que te sea de utilidad.
Nos vemos.
Guillermo
Nota del 13/Abr/07:
Aquí tienes un ejemplo de
cómo simular auto completar accediendo a una base de datos.
El código para VB .NET
(2005 o superior)
|
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim a() As String = {"Pepe Luis", "Pepe Ruiz", "Juan Francisco", _
"Luisa Lopez", "Lorenzo Llamas", "Lucio Bigote", _
"Juan Fernandez", "Pedro Picapiedra", _
"Luis Gonzalez", "Luna Soleada", _
"Luis Gordillo", "Pedro Picaron"}
' Añadir los elementos al ComboBox y ListBox
' a partir del array usando AddRange
With ComboBox1
.Items.Clear()
.Items.AddRange(a)
.SelectedIndex = 0
End With
' El ListBox no tiene propiedades de auto completar
With ListBox1
.Items.Clear()
.Items.AddRange(a)
.SelectedIndex = 0
End With
' Asignar la búsqueda incremental (auto completar)
With ComboBox1
.AutoCompleteMode = AutoCompleteMode.SuggestAppend
.AutoCompleteSource = AutoCompleteSource.ListItems
End With
' Usar los datos de un array
With TextBox1
.AutoCompleteMode = AutoCompleteMode.SuggestAppend
.AutoCompleteSource = AutoCompleteSource.CustomSource
.AutoCompleteCustomSource.AddRange(a)
End With
' Usar las direcciones del explorer
With TextBox2
.AutoCompleteMode = AutoCompleteMode.SuggestAppend
.AutoCompleteSource = AutoCompleteSource.RecentlyUsedList
End With
End Sub
|
El código para C#
(2005 o superior)
|
private void Form1_Load(object sender, EventArgs e)
{
string[] a = { "Pepe Luis", "Pepe Ruiz",
"Juan Francisco", "Luisa Lopez",
"Lorenzo Llamas", "Lucio Bigote",
"Juan Fernandez", "Pedro Picapiedra",
"Luis Gonzalez", "Luna Soleada",
"Luis Gordillo", "Pedro Picaron" };
ComboBox1.Items.Clear();
ComboBox1.Items.AddRange(a);
ComboBox1.SelectedIndex = 0;
// El ListBox no tiene propiedades de auto completar
ListBox1.Items.Clear();
ListBox1.Items.AddRange(a);
ListBox1.SelectedIndex = 0;
// Asignar la búsqueda incremental (auto completar)
ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
// Usar los datos de un array
TextBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
TextBox1.AutoCompleteCustomSource.AddRange(a);
// Usar las direcciones del explorer
TextBox2.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
TextBox2.AutoCompleteSource = AutoCompleteSource.RecentlyUsedList;
}
|
Espacios de nombres usados en el código de este artículo:
System.Windows.Forms
|