Ejemplo n.º 1
0
        public static int Locate(string toLocate, int type, bool caseSense, int initialLocate) //Serve pra localizar a próxima palavra ou anterior passada no form_localizar
        {
            int  next = 0, prev = -1, richLenght = 0;                                          //next: posição da próxima localização; prev: posição do inicio-tamanho da localização atual; richLenght: tamanho da localização atual;
            int  selectionStart = 0;                                                           //Guarda a posição inicial do texto selecionado
            bool found          = false;                                                       //Se no botão anterior foi encontrado ou não a localização

            if (initialLocate != 0)
            {
                next = initialLocate + myText.SelectionLength;
            }
            if (myText.SelectedText != "")
            {
                selectionStart = myText.SelectionStart;
            }

            if (type == 0) //Próximo
            {
                if (myText.Find(toLocate, next, false, caseSense) == -1)
                {
                    MessageBox.Show("Não foi possível localizar \"" + toLocate + "\"", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return(selectionStart);
                }
            }
            else     //Anterior
            {
                richLenght = myText.SelectionLength;
                prev       = initialLocate;                             //prev=next-richLenght;
                for (int i = prev - richLenght; i > 0; i -= richLenght) //i-=richLenght porque assim ele confere do 210-200 (por exemplo) e no próximo confere do 220-210, e por aí vai...
                {
                    Console.WriteLine("i={0}, initialLocate={1}, richLenght={2}", i, initialLocate, richLenght);
                    if (myText.Find(toLocate, i, true, caseSense) != -1)
                    {
                        found = true;
                        break;
                    }
                    //Assim que ele encontrar a última instância antes de prev, ele para
                }
                if (found == false)
                {
                    MessageBox.Show("Não foi possível localizar \"" + toLocate + "\"", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return(selectionStart);
                }
            }
            return(myText.SelectionStart);
        }