none
Localizar palavra em TextBox e seleciona-la? RRS feed

  • Pergunta

  • Olá, como faço para localizar uma palavra no TextBox (esta palavra estará contida em outro TextBox) e seleciona-la no texto?
    • Editado Free4k quarta-feira, 11 de março de 2015 18:13
    quarta-feira, 11 de março de 2015 18:13

Respostas

  • Free4k desculpe no código que te passei esqueci de adicionar no trecho indexOfAntigo = indexOf +1.

    Fica assim:

            int indexOfAntigo = 0;
            public void LocalizaPalavraTextBox(string strBusca)
            {
                int indexOf = txtQueQueroBuscar.Text.IndexOf(strBusca, indexOfAntigo);
                // Este trecho de código é para garantir que quando chegar a ultima localização volte para trás
                if (indexOf == -1 && indexOfAntigo > 0)
                {
                    indexOfAntigo = 0;
                    indexOf = txtQueQueroBuscar.Text.IndexOf(strBusca, indexOfAntigo);
                }
    
                if (indexOf > -1)
                {
                    txtQueQueroBuscar.SelectionStart = indexOf;
                    txtQueQueroBuscar.SelectionLength = strBusca.Length;
    
                    indexOfAntigo = indexOf + 1;
                }
                else
                {
                    indexOfAntigo = 0;
                }
            }

    • Marcado como Resposta Free4k quarta-feira, 11 de março de 2015 19:15
    quarta-feira, 11 de março de 2015 19:11

Todas as Respostas

  • Olá Free4k pode usar um código como o abaixo:

            public void LocalizaPalavraTextBox(string strBusca)
            {
                int indexOf = txtQueQueroBuscar.Text.IndexOf(strBusca);
                if (indexOf > -1)
                {
                    txtQueQueroBuscar.SelectionStart = indexOf;
                    txtQueQueroBuscar.SelectionLength = strBusca.Length;
                }
            }

    quarta-feira, 11 de março de 2015 18:28
  • Deu certo amigo, porém se tiver duas ou mais palavras iguais ele seleciona sempre a primeira, tem como selecionar uma de cada vez? Obrigado.
    quarta-feira, 11 de março de 2015 18:39
  • Sim vc poderia armazenar o indice anterior que foi pesquisado e pesquisar a frente dele, assim:

            int indexOfAntigo = 0;
            public void LocalizaPalavraTextBox(string strBusca)
            {
                int indexOf = txtQueQueroBuscar.Text.IndexOf(strBusca, indexOfAntigo);
                // Este trecho de código é para garantir que quando chegar a ultima localização volte para trás
                if (indexOf == -1 && indexOfAntigo > 0)
                {
                    indexOfAntigo = 0;
                    indexOf = txtQueQueroBuscar.Text.IndexOf(strBusca, indexOfAntigo);
                }
    
                if (indexOf > -1)
                {
                    txtQueQueroBuscar.SelectionStart = indexOf;
                    txtQueQueroBuscar.SelectionLength = strBusca.Length;
    
                    indexOfAntigo = indexOf;
                }
                else
                {
                    indexOfAntigo = 0;
                }
            }

    quarta-feira, 11 de março de 2015 18:43
  • Novamente ele seleciona só a primeira. Olha como ficou o meu código:

     Dim indexOfAntigo As Integer = 0
        Private Sub btnLocalizar_Click(sender As Object, e As EventArgs) Handles btnLocalizar.Click
            Dim indexOf As Integer = frmPrincipal.rchConteudo.Text.IndexOf(txtBusca.Text, indexOfAntigo)
            If indexOf = -1 And indexOfAntigo > 0 Then
                indexOfAntigo = 0
                indexOf = frmPrincipal.rchConteudo.Text.IndexOf(txtBusca.Text, indexOfAntigo)
            End If
    
            If indexOf > -1 Then
                frmPrincipal.rchConteudo.SelectionStart = indexOf
                frmPrincipal.rchConteudo.SelectionLength = txtBusca.Text.Length
    
                indexOfAntigo = indexOf
            Else
                indexOfAntigo = 0
            End If
            frmPrincipal.Focus()
        End Sub

    Obrigado.

    quarta-feira, 11 de março de 2015 19:02
  • Free4k desculpe no código que te passei esqueci de adicionar no trecho indexOfAntigo = indexOf +1.

    Fica assim:

            int indexOfAntigo = 0;
            public void LocalizaPalavraTextBox(string strBusca)
            {
                int indexOf = txtQueQueroBuscar.Text.IndexOf(strBusca, indexOfAntigo);
                // Este trecho de código é para garantir que quando chegar a ultima localização volte para trás
                if (indexOf == -1 && indexOfAntigo > 0)
                {
                    indexOfAntigo = 0;
                    indexOf = txtQueQueroBuscar.Text.IndexOf(strBusca, indexOfAntigo);
                }
    
                if (indexOf > -1)
                {
                    txtQueQueroBuscar.SelectionStart = indexOf;
                    txtQueQueroBuscar.SelectionLength = strBusca.Length;
    
                    indexOfAntigo = indexOf + 1;
                }
                else
                {
                    indexOfAntigo = 0;
                }
            }

    • Marcado como Resposta Free4k quarta-feira, 11 de março de 2015 19:15
    quarta-feira, 11 de março de 2015 19:11
  • Obrigado amigo!
    quarta-feira, 11 de março de 2015 19:15