Pues quien no quiere que los combobox funcionen en sus aplicaciones al estilo de los de msexcel, me refiero como el del tipo de fuente, que mientraz vaz escribiendo vaz mostrando valores filtrados, pues en .NET tienes esa opcion para usarla: autocompletar, para usar esto podemos ir a la ventana de propiedades y completar las opciones de AutoCompleteMode y AutoCompleteSource
AutoCompleteMode:
- Suges: Suguiere y al ir escribiendo va filtrando, si borras los caracteres vuelve a buscar, mostrando las coincidencias en la lista desplegada
- Append: NO muestra las suguerencias en la lista desplegada, pero te va autocompletando la escritura en el combo.
- SugesAppend: una combinacion de ambos.
AutoCompleteSource:
- FileSystem Especifica el sistema de archivos como origen.
- HistoryList Incluye los Localizadores de Recursos Uniformes (URL) en la lista de historial.
- RecentlyUsedList Incluye los Localizadores de Recursos Uniformes (URL) de la lista de las direcciones URL usadas recientemente.
- AllUrl Especifica el equivalente de HistoryList y RecentlyUsedList como origen.
- AllSystemSources Especifica el equivalente de FileSystem y AllUrl como el origen. Éste es el valor predeterminado cuando AutoCompleteMode se ha establecido en un valor distinto del valor predeterminado.
- FileSystemDirectories Especifica que sólo los nombres de directorio y no los nombres de archivo se finalizarán automáticamente.
- CustomSource Especifica cadenas desde un AutoCompleteStringCollection integrado como origen.
- None Especifica que ningún AutoCompleteSource está actualmente en uso. Éste es el valor predeterminado de AutoCompleteSource.
- ListItems Especifica que los elementos de ComboBox representan el origen.
un caso sencillo seria:
a nuestro combo le anhadimos elementos en la propiedad itemlist y luego nos vamos a AutoCompleteMode y elegimos en el que queramos a mi personalmente me gusta el SugesAppend y AutoCompleteSource en ListItems y ya esta funcionando.
Existe una dificultad que cuando usas un combo enlazado (osea si usas la propiedad datasource del combo) pues por nada del mundo te permite ListItems, sino tienes que usar CustomSource, pero usar el custom source no radica en grandes problemas ya que simplemente el customsource tiene que ser una lista de tipo AutoCompleteStringCollection, en donde llenas los valores que se muestran. Algo como esto:
AutoCompleteStringCollection stringCol = new AutoCompleteStringCollection();
foreach (xmeeleControls.enlazacombo elem in this.Lista)
{
stringCol.Add(elem.Texto);
}
combo1.AutoCompleteCustomSource = stringCol;
combo1.AutoCompleteSource = AutoCompleteSource.CustomSource;
combo1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
Donde Lista es una lista tipada de tipo xmeeleControls.enlazacombo y posee la propiedad texto que ermite devolver los textos que se muestran el combo.
Pero como veran esto hace que definir ahora nuestros combos sean mas y mas lineas de codigo, en lo personal esto ya me esta molestando imaginen que tenemos un formulario con 6 combos, alli si que estamos escribiendo muhcas lineas que podrian ser automatizadas, en un proximo post voy a hablar sobre extender controles y como hacer algunas de estas operaciones de manera automatica.
Venga me despido y que los generics les acompanhen. 😉
Excelente muchas gracias!
csm
Excelente trabajo