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
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por Edward (146 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
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por Edward (146 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
sin imagen de perfil

Buscar cadena de texto en Combobox

Publicado por arbol (166 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
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por Edward (146 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
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 14/11/2016 10:00:37
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
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 14/11/2016 17:37:23
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
Val: 150
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por Javier (77 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

Buscar cadena de texto en Combobox

Publicado por jose (1 intervención) el 24/09/2017 03:41:43
Estimado, Ignacio, tu me puedes envar tu codigo, o el form donde te funciona, la verdad ando buscando lo mismo hace tiempo.

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 jeisson beltran (1 intervención) el 31/10/2017 03:48:51
podrias enviarme el codigo he estado buscando lo mismo por favor
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
sin imagen de perfil

Buscar cadena de texto en Combobox

Publicado por diego (2 intervenciones) el 23/09/2020 09:46:36
en tu codigo Me.dtListado que viene ser?

me puedes ayudar?
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
sin imagen de perfil
Val: 9
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por cristhian (4 intervenciones) el 13/02/2021 13:10:16
buenas desde españa porfa me podrias decir de donde sacas el
dtlistado
porque me da error al poner el codigo
gracias
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
sin imagen de perfil
Val: 9
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por cristhian (4 intervenciones) el 05/03/2021 15:20:56
me podrias ayudar porque quiero buscar en un combobox ya cargado y no se como gracias de atenamo agradesco cualquier ayuda
saludos desde españa
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 Juan Carlos Bonifacio Guerra (1 intervención) el 25/09/2018 00:56:59
Una forma simple de filtrar los items del combobox sería usando el evento dropdown.

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
'//declaramos variable global donde se almacenarán los datos en memoria
Dim dt As New DataTable
 
Private Sub Form_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
    dt.Columns.Add("LISTA")
    For i As Integer = 1 To 10
        CbxLista.Items.Add("item " & i)
        Dim row As DataRow = dt.NewRow()
        row("LISTA") = "item " & i
        dt.Rows.Add(row)
    Next
End Sub
 
Private Sub cbxLista_DropDown(sender As Object, e As EventArgs) Handles cbxLista.DropDown
    cbxLista.Items.Clear()
    If Trim(cbxLista.Text) <> "" Then
        Dim rows As DataRow()
        rows = dt_ctas.Select("LISTA like '%" & cbxLista.Text & "%'")
        If rows.Length > 0 Then
            For Each row As DataRow In rows
                cbxLista.Items.Add(row("LISTA"))
            Next
        Else
            For Each row As DataRow In dt.Rows
                cbxLista.Items.Add(row("LISTA"))
            Next
        End If
    Else
        For Each row As DataRow In dt.Rows
            cbxLista.Items.Add(row("LISTA"))
        Next
    End If
End Sub

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
sin imagen de perfil
Val: 9
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar cadena de texto en Combobox

Publicado por cristhian (4 intervenciones) el 05/03/2021 15:31:10
el dt_ctas es lo declaras como datatable porque me da error
agradesco tu ayuda
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
sin imagen de perfil

Visual Basic.NET - Buscar cadena de texto en Combobox

Publicado por diego (2 intervenciones) el 06/11/2020 01:32:34
buenas noches , soy nuevo en esto , me puedes explicar que viene hacer el dtListado agradecería me ayudes por favor.
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
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Visual Basic.NET - Buscar cadena de texto en Combobox

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 06/11/2020 21:25:09
Ese código en ese caso tiene a ser un datatable con datos, que también podría ser una lista, solo eso es.

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
sin imagen de perfil
Val: 9
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

de donde sacas el dtlistado es una variable dataset o como lo declaras me da error agradesco ayuda

Publicado por cristhian (4 intervenciones) el 05/03/2021 15:05:32
de donde sacas el dtlistado es una variable dataset o como lo declaras me da error agradesco ayuda
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