Visual Basic.NET - Buscar cadena de texto en Combobox

   
Vista:
Imágen de perfil de Ignacio

Buscar cadena de texto en Combobox

Publicado por Ignacio (8 intervenciones) el 13/11/2016 00:41:33
¡ Hola a todos !

Soy nuevo en esto. Estoy desarrollando una aplicación en vs.net, tengo un combobox que se rellena desde un datatable, el código busca una cadena de texto ubicada en cualquier parte del campo según lo que escriba el usuario en el combobox.

El problema es que al introducir el texto la línea donde se escribe se tapa automáticamente con el primer resultado de la búsqueda después de escribir el tercer caracter, o se pone totalmente en blanco cundo escribo la línea:
ComboListadoRemitente.SelectedIndex = -1
Y esto no deja seguir escribiendo al usuario, lo que busco es que se puedan escribir todos los caracteres que uno quiera.

Aquí está el código completo:

Private Sub ComboListadoRemitente_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboListadoRemitente.KeyUp

Dim strText As String

strText = ComboListadoRemitente.Text

If Len(strText) > 2 Then

ComboListadoRemitente.DataSource = dtListado.Select("listado LIKE '%" & strText & "%'")

ComboListadoRemitente.DroppedDown = True

ComboListadoRemitente.SelectedIndex = -1

Cursor.Current = Cursors.Default

End If

End Sub


De ya muchas gracias por vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Edward

Buscar cadena de texto en Combobox

Publicado por Edward (143 intervenciones) el 13/11/2016 03:09:33
Buen día para todos,

Ignacio, Si ya tienes lleno el ComboBox no deberías realizar la búsqueda en la base de datos debido a que ya tienes la información cargada, para realizar la búsqueda en los items del ComboBox a medida que se va escribiendo lo puedes hacer mediante la modificación de las propiedades del ComboBox de la siguiente forma:

1
2
3
4
5
Propiedad DropDownStyle en DropDown
 
Propiedad AutocompleteSource en ListItems
 
Propiedad Autocompletemode en Suggest

Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Ignacio

Buscar cadena de texto en Combobox

Publicado por Ignacio (8 intervenciones) el 13/11/2016 03:24:50
Hola Edward:

Muchas Gracias por tu pronta respuesta, lo que propones está muy bien, pero sólo busca cadenas según el comienzo del campo, en cambio la línea de código:

ComboListadoRemitente.DataSource = dtListado.Select("listado LIKE '%" & strText & "%'")

busca una cadena en cualquier parte del campo y eso es lo que necesito.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edward

Buscar cadena de texto en Combobox

Publicado por Edward (143 intervenciones) el 13/11/2016 04:39:44
Buen día para todos,

Ignacion, te comento que lo que planteas hasta donde tengo entendido no es posible, debes implementarlo mediante un TextBox para que alimente al ComboBox con lo que se escribe en el TextBox.

Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ignacio

Buscar cadena de texto en Combobox

Publicado por Ignacio (8 intervenciones) el 13/11/2016 05:00:16
Hola Edward:

Gracias nuevamente por tu respuesta, seguiré buscando porque ya lo hice en Access VBA y no creo que no sea posible hacerlo en .NET.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar cadena de texto en Combobox

Publicado por arbol arbolzacapoaxtla@hotmail.com (115 intervenciones) el 13/11/2016 14:36:44
saludos

todo se puede realizar em la programacion
veo que no tienes dominio de los metodos funciones y las ideas de como manipular los controles

lo qie pretendes realizar es sencillo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-2
Comentar
Imágen de perfil de Edward

Buscar cadena de texto en Combobox

Publicado por Edward (143 intervenciones) el 13/11/2016 17:17:33
Buen día para todos,

Arbol, sería de utilidad para todos que compartas la forma de hacerlo.

Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ignacio

Buscar cadena de texto en Combobox

Publicado por Ignacio (8 intervenciones) el 13/11/2016 17:33:10
Hola Edward:

Todavía no encuentro la solución pero sigo investigando y esperando aportes, si lo soluciono por supuesto que lo publicaré.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Buscar cadena de texto en Combobox

Hola Ignacio, nada aún?.

Según lo que entiendo, lo que tu necesitas es un combobox mas o menos así:

Que de toda esa tremenda lista cargada como se muestra en esta imagen.


COMBOBOXBUSCAR3

Te permita escribir algo que estás buscando como en esta imagen.

COMBOBOXBUSCAR1

Quedando solo los coincidentes, para finalmente seleccionar el que te conviene y te quede solo esto:

COMBOBOBUSCAR2

Eso es lo que buscas mas o menos?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Ignacio

Buscar cadena de texto en Combobox

Publicado por Ignacio (8 intervenciones) el 14/11/2016 15:01:28
Hola Wilfredo:

Gracias por responder, eso es lo que estoy buscando

Espero tu respuesta

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Buscar cadena de texto en Combobox

Eso nos gustaría que hiciera el combobox estandar de Visual studio, pero creo que no lo hace, al menos no como lo que pides, así que cuando algunas cosas no se ajustan a las necesidades, pues tenemos que hacer nuestros propios controles, claro eso siempre y cuando haya tiempo.

Lo que te estoy mostrando en la imagen, no es otra cosa que la unión de 3 controles: 1 textbox, 1 button, y un listbox.
Que funciona igual que el combobox?, Pues hasta cierto modo si ya que el listbox, tiene propiedad datasource, Displaymember, Valuemember, igual que el combobox, la parte de desplegarse y el efecto dropdown, ya lo puedes hacer con el button que está dentro del textbox, por lo demas no hay nada de extraordinario y cumple el cometido, de seleccionar, un elemento con selectvalue y todo eso.

Si no tienes mucho tiempo para elaborar un control con todas las de la ley, puedes armar uno así como te digo.
Cúanto tiempo me ha llevado?, pues nada mas ni nada menos que 5 minutitos, así que con los dias que vas a pasar esperando, te queda suficiente como para personalizarlo a tu gusto.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Ignacio

Buscar cadena de texto en Combobox

Publicado por Ignacio (8 intervenciones) el 14/11/2016 20:17:20
Hola Wilfredo:

Muchas gracias por tu respuesta y por el tiempo dedicado.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ignacio

Buscar cadena de texto en Combobox

Publicado por Ignacio (8 intervenciones) el 21/11/2016 03:40:27
Finalmente conseguí algo que funciona bien, no es la versión final, se puede seguir mejorando, aquí les dejo el código:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Public Sub ComboListadoRemitente_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboListadoRemitente.KeyUp
 
    Dim strText As String
 
    strText = ComboListadoRemitente.Text
 
 
    If ComboListadoRemitente.Text = "" Then
 
        Me.ComboListadoRemitente.DataSource = Me.dtListado
 
        Me.ComboListadoRemitente.ValueMember = "Id"
 
        Me.ComboListadoRemitente.DisplayMember = "listado"
 
        ComboListadoRemitente.SelectedIndex = -1
 
        ComboListadoRemitente.DroppedDown = False
 
    End If
 
 
 
    If Len(strText) > 2 Then
 
        ComboListadoRemitente.DataSource = dtListado.Select("listado LIKE '%" & strText & "%'")
 
        Me.ComboListadoRemitente.ValueMember = "Id"
 
        Me.ComboListadoRemitente.DisplayMember = "listado"
 
        If ComboListadoRemitente.Items.Count <> 0 Then
 
            ComboListadoRemitente.DroppedDown = True
 
            ComboListadoRemitente.SelectedIndex = -1
 
            ComboListadoRemitente.Text = ""
 
            ComboListadoRemitente.SelectedText = strText
 
            strText = ""
 
            Cursor.Current = Cursors.Default
 
 
        Else
 
            Me.ComboListadoRemitente.DataSource = Me.dtListado
 
            Me.ComboListadoRemitente.ValueMember = "Id"
 
            Me.ComboListadoRemitente.DisplayMember = "listado"
 
            ComboListadoRemitente.SelectedIndex = -1
 
            ComboListadoRemitente.Text = ""
 
            ComboListadoRemitente.SelectedText = strText
 
            strText = ""
 
            ComboListadoRemitente.DroppedDown = False
 
 
 
        End If
 
    End If
 
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier

Buscar cadena de texto en Combobox

Publicado por Javier (44 intervenciones) el 22/11/2016 00:35:21
Intentando agregar una opción al tema, creo una buena solución, no utiliza varios controles, solo un Textbox, no se si te sirva, si no a ti tal vez a otros compañeros o en un futuro.

Lo trabajo en C#, pero podrias adaptarlo a VB.

Creo un DataTable con los datos, utilizo la clase AutoCompleteStringCollection para retornar la coleccion de datos.

En el LOAD del form llamo a estos datos de la siguiente forma

1
2
3
tutextbox.AutoCompleteCustomSource = tuclase.nombredelmetodoautocomplete();
tutextbox.AutoCompleteMode = AutoCompleteMode.Suggest;
tutextbox.AutoCompleteSource = AutoCompleteSource.CustomSource;

Con esto, al teclear tenemos como resultado lo siguiente.



ejemplo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ignacio

Buscar cadena de texto en Combobox

Publicado por Ignacio (8 intervenciones) el 22/11/2016 01:13:27
Javier:

Gracias por tu respuesta., no es lo que buscaba pero igual la tendré en cuenta.

Ya logré encontrar texto en cualquier parte del campo y no solamente en el comienzo, el código de mi último post funciona bien y sólo utiliza un combobox.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar