мое программное обеспечение заменяет некоторые заполнители в richtextbox (Forms) изображениями.
чтобы найти его, я использую функцию richtextbox.Find (String). Это работает.
if (obj.GetType() == typeof(Datenblock_Mitte_Bild))
{
int startsel = raw_rtf.Find("[[$Bild_" + ((Datenblock_Mitte_Bild)obj).int_id + "]]");
raw_rtf.SelectionStart = startsel;
raw_rtf.SelectionLength = ("[[$Bild_" + ((Datenblock_Mitte_Bild)obj).int_id + "]]").Length;
...}
но, если заполнитель является последним текстом в richtextbox, И я ранее заменил другой заполнитель изображением (внутри таблицы), я получаю параметр «System.ArgumentOutOfRangeException»: длина в строке «raw_rtf.Find (...)», если 4 или более символов после последнего заполнителя, все работает нормально.
Не работает: «test test [[$ Bild_test1]] и pic2 [[$ Bild_test2 ]] "
работает:" test test [[$ Bild_test1]] и pic2 [[$ Bild_test2]] abcd "
EDIT: для каждого изображения до этого должно быть 4 символа, поэтому, если" [[$ Bild_test1]] "состоит из 2 изображений, это должно быть 8 символов, 3 изображения -> 12 символов ...
Похоже, что функция FIND не может определить правильную длину rtf. Stracktrace показывает, что ошибка находится в параметре длины подстроки.
StackTrace "bei System.String.Substring (Int32 startIndex, Int32 length) \ r \ n bei System. Windows .Forms.RichTextBox .Find (String str, Int32 start, Int32 end, RichTextBoxFinds параметры) \ r \ n в системе. Windows .Forms.RichTextBox.Find (String str)