Visual Basic.NET - ListBox.FindString

 
Vista:

ListBox.FindString

Publicado por Gustavo (2 intervenciones) el 15/10/2008 03:18:21
Eh encontrado por la red que el metodo FindString encuentra el primer elemento que encuentra en un ListBox segun el string recibido como parametro. Pero no e encontrado la forma de copiar todos los elementos enontrados de un list a otro.
Por ejemplo, yo tengo en mi lista :

Jose Esqueda
Juan Morales
Juan Urrutia
Kimberly Martinez
Laura Gomez
Lorenzo Moya

y al buscar una "J "necesito que en otro list se agregue:
Jose Esqueda
Juan Morales
Juan Urrutia

si busco "Jo" que en eltro list ahora solo agregue:
Jose Esqueda

Algo asi como una busqueda segun la letra ke vaya escribiendo....

Alguien tiene una sugerencia, cualquier aportacion es bienvenida. Gracias por su tiempo de cualquier forma.
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
sin imagen de perfil

RE:ListBox.FindString

Publicado por P. J. (706 intervenciones) el 15/10/2008 17:21:21
Uhmm, no sabia de ese metodo gracias por eso.

Pero igual lo quise implementar para usarlo, y ese metodo me devuelve la posicion del indice elemento encontrado pero inicia en -1 y me devolvia otros valores. Entonces si complicarme mucho lo hice asi:

Agregas 2 listbox, un boton y en el evento clic pones:

Me.ListBox2.Items.Clear()
For i As Integer = 0 To Me.ListBox1.Items.Count - 1
If Me.ListBox1.Items.Item(i).ToString.ToUpper.Contains("JO") Then
Me.ListBox2.Items.Add(Me.ListBox1.Items.Item(i))
End If
Next

Y funciona.

P.D: Contains, te devuelve TRUE o FALE si encuentra coincidencia del caracter en la cadena, mucho mejor :D

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

RE:ListBox.FindString

Publicado por Gustavi (2 intervenciones) el 15/10/2008 23:03:04
Saludos P.J.

Lo ke me envias es cierto ke funciona...pero...busca en toda la cadena del elemento, no es posible buscar solo al principio?, mi idea es que en el list2 se vaya autocompletanto segun escriba letra por letra.........¿Hay alguna forma de hacer lo mismo pero solo comparando empezando desde el principio de la cadena?....

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

RE:ListBox.FindString

Publicado por P. J. (706 intervenciones) el 15/10/2008 23:12:38
Uhmmm, pues si te entendi bien entonces:

Teniendo la sgte lista:

Jose Esqueda
Juan Morales
Juan Urrutia
Kimberly Martinez
Laura Gomez
Lorenzo Moya

Si yo agregara mi nombre: Pablo Jose

Este ultimo no deberia aparecer porque solo toma los del inicio, prueba este codigo si es de esta manera:

Me.ListBox2.Items.Clear()
Dim strCadena As String = "JO"
For i As Integer = 0 To Me.ListBox1.Items.Count - 1
If Me.ListBox1.Items.Item(i).ToString.Substring(0, strCadena.Length).ToUpper = strCadena.ToUpper Then
Me.ListBox2.Items.Add(Me.ListBox1.Items.Item(i))
End If
Next

Solo me agrego: Jose Esqueda

Suerte.
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

RE:ListBox.FindString

Publicado por Pablo1988 (1 intervención) el 13/10/2011 16:27:32
Tu codigo funcionó a la perfeccion. A medida que voy introduciendo caracteres en el cuadro de texto (txt_Buscar) se van agregando las coincidencias de ListBox1 a ListBox2, y si voy borrando caracteres, se van eliminando.

Ahora, cuando introdusco el nombre del elemento completo (Por ejemplo, en ListBox1 tengo el elemento "Jose", y en el cuadro de texto (txt_Buscar) introdusco "Jose") me arroja el siguiente error:

No se controló ArgumentOutOfRangeException
El indice y la longitud deben hacer referencia a una ubicacion en la cadena. Nombre parámetro: lenght.

El codigo que tengo yo en mi TextBox es el siguiente:

Private Sub txt_Buscar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_Buscar.TextChanged

Dim strCadena As String = txt_Buscar.Text
ListBox2.Items.Clear()

For i As Integer = 0 To ListBox1.Items.Count - 1
If txt_Buscar.Text = "" Then
ListBox2.Items.Clear()
ElseIf ListBox1.Items.Item(i).ToString.Substring(0, strCadena.Length).ToUpper = strCadena.ToUpper Then
ListBox2.Items.Add(ListBox1.Items.Item(i))
End If
Next

End Sub

Ojala puedan ayudarme :'(. Gracias, chao :D.
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