Archivos por Etiqueta: AutoCompleteSource

Autocompletar TextBox y ComboBox

23 jul

Hace algunos días venia buscando información sobre el autocompletado y encontré algunas cosas que me ayudaron y bueno ya le puse autocompletado a mi programa y quedo bien, así que tratare de explicar lo que hice y pondré un ejemplo. Para empezar encontré esta página de Msdn.

Utilice las propiedades AutoCompleteCustomSource, AutoCompleteMode y AutoCompleteSource para crear un ComboBox que complete automáticamente cadenas de entrada comparando el prefijo que se escribe con los prefijos de todas las cadenas de un origen mantenido. Esto es útil para controles ComboBox en los que se escribirán frecuentemente direcciones URL, direcciones, nombres de archivo o comandos. Si hay entradas duplicadas en el origen mantenido, la finalización automática se comporta de forma imprevisible.

Si establece ComboBoxStyle en DropDownList, la lista sólo muestra si AutoCompleteMode es Suggest o SuggestAppend.

El uso de la propiedad AutoCompleteCustomSource es opcional, pero debe establecerse la propiedad AutoCompleteSource en CustomSource para poder utilizar AutoCompleteCustomSource.

Debe utilizar las propiedades AutoCompleteMode y AutoCompleteSource juntas.

Con AutoCompleteMode establecida en SuggestAppend y AutoCompleteSource establecida en ListItems, el comportamiento es el siguiente:

  • Si la lista de cadenas está vacía, al presionar la tecla RETROCESO o SUPR no sucede nada.
  • Si se presiona la tecla RETROCESO menos de un segundo, se selecciona el elemento anterior o no se selecciona nada si la lista de cadenas está vacía.
  • Si se presiona la tecla RETROCESO más de un segundo, se selecciona el primer elemento.
  • Si se presiona la tecla SUPR, se selecciona el primer elemento.

Mas informacion tambien pueden encontrar en CSharp Corner.

Despues de documentarnos un poco vamos a poner manos a la obra.  Lo que vamos a hacer es cargar un ComboBox con la datos de la tabla Clientes haciendo uso de la base de datos Northwind y luego vamos a hacer que el TextBox se autocomplete con esos datos.

Formulario de Autocomplete

Formulario de Autocomplete

Primero vamos a Cargar el ComboBox haciendo uso de la Clase y metodo que hicimos en el post anterior Programacion en Capas, en donde definimos el metodo ListarClientes.

//Creamos una instancia de la Clase mCustomers

//que es la clase donde pondremos los metodos

mCustomers ObjCust = new mCustomers();

//Creamos una lista del tipo cCustomers

List<cCustomers> LstCust = new List<cCustomers>();

private void Form1_Load(object sender, EventArgs e)

{

LstCust = ObjCust.ListarClientes(“select CustomerID, CompanyName from customers”);

CboAuto.DataSource = LstCust;

CboAuto.ValueMember = “CustomerID”;

CboAuto.DisplayMember = “CompanyName”;

AutoCompletarTxt(AutoCompleteMode.None);

}

Ahora vamos a ver le procediminto para autocompletar el TextBox

private void AutoCompletarTxt(AutoCompleteMode AuMode)

{

//Indicamos que vamos a usar una fuente personalizada

TxtAuto.AutoCompleteSource = AutoCompleteSource.CustomSource;

//El modo de Autocompletado lo vamos a pasar por un parametro

//para poder escoger con los CheckBoxes

TxtAuto.AutoCompleteMode = AuMode;

//Creamos la Clase que corresponde al tipo AutoCompleteCustomSource

AutoCompleteStringCollection aColl = new AutoCompleteStringCollection();

//Hacemos una consultaa la Lista

var auto = from obj in LstCust

select obj.CompanyName;

//Recorremos la lista

foreach (string cad in auto)

{

aColl.Add(cad);

}

//Le asignamos la fuente al TextBox y eso es todo

TxtAuto.AutoCompleteCustomSource = aColl;

}

Como veran hice una consulta para recuperar el campo CompanyName, pero seguramente habra muchas maneras de hacer esto, espero sugerencia.

foreach (string cad in auto)

{

TxtAuto.AutoCompleteCustomSource.Add(cad);

}

Tambien pudimos poner asi, y ya no crear el AutoCompleteStringCollection.
Espero consejos y criticas.
Les dejo adjunto la fuente AppAutocomplete.rar

Seguir

Get every new post delivered to your Inbox.