Cómo en .NET

Auto completar en Visual Basic y C# 2005

Publicado el 26/Oct/2006
Actualizado el 13/Abr/2007
Autor: Guillermo 'guille' Som

Ejemplo de cómo usar auto completar en los controles ComboBox y TextBox usando Visual Basic 2005 y C# 2005 (2.0). Y como de costumbre, con código tanto para VB como para C#.

 

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.

 


Código para Visual Basic.NET (VB.NET)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

 


Código para C Sharp (C#)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
 



Ir al índice principal de el Guille