none
Buscar siguiente en TextBox

    Pregunta

  • Hola.

            Dim strg As String = (TextBoxBuscar.Text)
            Dim stlg As Integer = strg.Length
            Dim indx As Integer = -1
            Do
                indx = TextBoxTexto.Text.IndexOf(strg, indx + 1)
                If indx <> -1 Then
                    TextBoxTexto.SelectionStart = indx
                    TextBoxTexto.SelectionLength = stlg
                    TextBoxTexto.ScrollToCaret()
                    If MessageBox.Show("Buscar siguiente?", "Continuar", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Cancel Then
                        Exit Do
                    End If
                End If
            Loop Until indx = -1

    Con el código anterior intento buscar una palabra (TextBoxBuscar.Text) en un TextBox (TextBoxTexto.Text) con varias líneas que contienen o no la palabra que quiero encontrar.

    Funciona todo bien. Pero lo que necesito es cambiar el MessageBox.Show por un Button que haga lo mismo.

    Gracias por sus respuestas.


    Rafael FM

    sábado, 18 de febrero de 2017 18:20

Respuestas

  • RafaelFM,

    Debes declarar la variable -que contiene el índice- a nivel de clase para persistir el valor del último índice encontrado en cada clic del botón.

    Dim Indice As Integer = 0
    
    Private Sub btnBuscarTexto_Click(sender As Object, e As EventArgs) Handles btnBuscarTexto.Click
    
    	Indice = TextBoxTexto.Text.IndexOf(TextBoxBuscar.Text, Indice,
    						StringComparison.CurrentCultureIgnoreCase)
    
    	If Indice <> -1 Then
    		TextBoxTexto.Focus()
    
    		TextBoxTexto.Select(Indice, TextBoxBuscar.TextLength)
    		TextBoxTexto.ScrollToCaret()
    
    		Indice += TextBoxBuscar.TextLength
    	Else
    		Indice = 0
    	End If
    
    End Sub


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta RafaelFM sábado, 18 de febrero de 2017 19:08
    sábado, 18 de febrero de 2017 18:58