Вам нужно запомнить индекс, по которому вы нашли свою предыдущую запись (или даже лучше, с которой вы должны начать найти следующий поиск), а затем просто использовать IndexOf(string, int)
перегрузку,который позволяет начать поиск с указанной позиции.Во-первых, просто добавьте поле следующего индекса поиска в свой класс:
private int nextSearchStartIndex;
Теперь ваш метод Find
должен постоянно обновлять этот индекс:
if (foundAt == -1)
{
this.nextSearchStartIndex = 0;
MessageBox.Show("Not Found");
}
else
{
this.nextSearchStartIndex = foundAt + searchText.TextLength;
// ...
}
И FindNext
становится тривиальным:
// ...
var foundAt = frm1TB.Text.IndexOf(searchText.Text,
this.nextSearchStartIndex);
// Here you can use exactly same update index logic as in Find