Witam,
w swoim programie mam funkcję która koloruje mi odpowiednie wyrazy w richtextbox na różne kolory.
Gdy napotka więcej niż jedno wystąpienie danego słowa koloruje skrajne wystąpienia i szuka "do środka". Używam dwóch funkcji IndexOf i LastIndexOf do wyszukiwania kolejnych wystąpień jednak dla drugiej z tych funkcji mimo takich samych arg. jak w przypadku IndexOf(!!!) otrzymuje wyjątek.
Kod:
int position = 0;
Font temp = richTextBox1.Font;
foreach (string s in Globals.key_words)
{
position = richTextBox1.Text.IndexOf(s);
int check = richTextBox1.Text.LastIndexOf(s);
while (check > position)
{
koloruj_slowa_kluczowe_na_poz(position, s.Length);
koloruj_slowa_kluczowe_na_poz(check, s.Length);
int old_pos = position;// 0=0
int tempos = richTextBox1.Text.Length; // 11
int WTF = check - position - 2; //5
position = richTextBox1.Text.IndexOf(s, position+1, check - position-2); //nie znajduje = -1, ale nie zgłasza wyjątku
int WTF1 = check - old_pos - 2;//5
check = richTextBox1.Text.LastIndexOf(s, old_pos+1, check - old_pos-2);//out of range exception
}
koloruj_slowa_kluczowe_na_poz(position, s.Length);
Jaka jest różnica pomiędzy LastIndexOf i IndexOf skoro jenda wyrzuca wyjątek a inna nie? Proszę o pomoc.