entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Busqueda del mismo caracter varias veces en un TextBox VB

Hola, estoy haciendo un mini programa para ver como funcionan elementos dentro de VB y me he encontrado con un problema que seguramente para vosotros sea muy simple, espero que me ayudeis.

El problema es tengo un MDI que llama a un hijo donde hay un TextBox y un Button Buscar, ese Button Buscar llama a otra ventana donde le pones el patrón que deseas buscar y hasta ahora se buscar ese patrón en la frase pero solo una vez, lo que necesito es buscar ese mismo patrón en el resto de la cadena

Un Ejemplo: TextBox: Hola que tal esto es una prueba

El patrón que eligo es un "a", hasta ahora se buscar la primera "a" que se encuentra con IndexOf pero no consigo que al darle al botón siguiente me busque las otras "a" que puede haber en el TextBox.

**Private Sub BtnSiguiente_Click(sender As System.Object, e As System.EventArgs) Handles BtnSiguiente.Click**

 Dim iResultadoBuscar As Integer
        iResultadoBuscar = CType(Me.Owner, FrmCarta).TxtDocuemnto.Text.IndexOf(Me.txtBuscar.Text)
        If iResultadoBuscar >= 0 Then
            CType(Me.Owner, FrmCarta).TxtDocuemnto.Focus()
            CType(Me.Owner, FrmCarta).TxtDocuemnto.SelectionStart = iResultadoBuscar
            CType(Me.Owner, FrmCarta).TxtDocuemnto.SelectionLength() = Me.txtBuscar.Text.Length
            LblEncontrado.Enabled = True
        End If

 **End Sub**

 **Private Sub BtnSiguiente_Click(sender As System.Object, e As System.EventArgs) Handles BtnSiguiente.Click**

  *********************** PROBLEMA ****************************

End Sub

Muchas Gracias por las ayudas¡¡

0voto

oskar5445 comentado

PD: Tengo la idea pero no se como realizarla, en principio estaba intentando coger la longitud donde se ha quedado y continuar buscando desde esa posición

Editado: movido a comentario porque no es una respuesta.

1 Respuesta

2votos

carlossevi Puntos63580

La función "siguiente" deberá ser practicamente igual a la función "buscar", pero como bien dices cambiando el punto de partida de la búsqueda.

Échale un vistazo a esta implementación de String.IndexOf(Char, Int32):

'Declaración
Public Function IndexOf ( _
    value As Char, _
    startIndex As Integer _
) As Integer

Si utilizas el segundo parámetro puedes elegir el punto inicial de búsqueda.

De hecho, una vez te funcione, yo por mantenimiento fusionaría el código en una sola función a la que se le pase como parámetro la posición del último resultado (que a su vez será la posición inicial de búsqueda) con valor cero en el caso de la primera búsqueda. Espero que se entienda.

PD. En el ejemplo que has pegado (que está mal formateado, intenta seleccionar tu código y pulsar el botón "{ }") ambas funciones se llaman igual y tienen el mismo Handle ¿es un error?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta