Индекс находился за пределами массива - RichTextBox устанавливает значение строки - PullRequest
0 голосов
/ 18 августа 2011

Я искал в Интернете и в StackOverflow, но не могу найти ответ на свой вопрос, хотя некоторые из них подошли очень близко.

Я программирую для .Net в Delphi Prism. У меня есть RichTextBox на WinForm, и мне нужно вставлять строку текста вверху каждый раз, когда программа вставляет. Итак, я делаю следующее, и оно работает до линии и вызывает следующее исключение.

код ошибки:

RichTextBox1.Lines.SetValue(str,0);

Исключение: Индекс находился за пределами массива

Я думаю, я думаю, я знаю, почему возникает исключение. Это потому, что в RichTextBox не вставлено ни одной строки. Итак, моя программа действительно не может вставить ни одной строки текста. Мне нужно вставлять строку текста вверху каждый раз, когда моя программа вставляет новую строку текста.

Если я вызываю RichTextBox1.AppendText (str) ;, тогда он работает и вставляет текст str без перевода строки, но он добавляется в конце. Я хочу, чтобы он вставлял текст вверху каждый раз.

Как вставить строку текста в RichTextBox? Спасибо.

1 Ответ

1 голос
/ 18 августа 2011

Свойство Lines текстового поля представляет собой просто массив строк.Поэтому вам нужно добавить один элемент, переместить все элементы на один индекс вниз и вставить новый текст в первый индекс.

Также свойство Text текстового поля является строкой.Строки в .NET являются неизменяемыми, поэтому вам необходимо полностью заменить это значение.

Один из подходов будет следующим:

RichTextBox1.Text := "YourNewText" + Environment.NewLine + RichTextBox1.Text;
...