Возможно, вам придется заменить эти строки в обратном порядке, так как после замены строки ваши индексы и длины будут другими.
Кроме того, для вашего кода, я думаю, вам нужно изменить его на что-то вроде этого:
//frm1TB.Text = frm1TB.Text.Replace(searchText.Text, replacingRichText.Text);
//frm1TB.Text.Insert();
frm1TB.SelectionStart = foundAt;
frm1TB.SelectionLength = searchText.TextLength;
frm1TB.SelectedText = replacingRichText.Text;
Вот простой пример (рефакторинг по мере необходимости):
private void ReplaceText(string findText, string replaceText) {
int index = frm1TB.Text.Length - 1;
index = frm1TB.Text.LastIndexOf(findText, index);
while (index > -1) {
frm1TB.SelectionStart = index;
frm1TB.SelectionLength = findText.Length;
frm1TB.SelectedText = replaceText;
index = frm1TB.Text.LastIndexOf(findText, index);
}
}