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); }