Удалить первую строку / строки из добавленного текста - PullRequest
0 голосов
/ 08 февраля 2019

Я борюсь с моим richtextbox в Visual Studio.Я добавляю сообщение из последовательного интерфейса (uart).

Но после ~ 1000 строк я хочу удалить первую строку / с.

Но как это должно работать?

Я пытался:

this.richTextBox_message.Text.Remove(0, 1000);      // doesn't work
                                                    // would be bad solution, because i want to remove lines and not chars,
this.richTextBox_message.Select(0, 100);
this.richTextBox_message.SelectedText.Remove(1);    // doesn't work

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019
richTextBox1.Lines = richTextBox1.Lines.Skip(1).Take(richTextBox1.Lines.Length -1).ToArray();
0 голосов
/ 08 февраля 2019

Компактная версия

string text = this.richTextBox_message.Text;
this.richTextBox_message.Text = text.Substring(text.IndexOf('\n') + 1, text.Length - text.IndexOf('\n')-1);

Пояснение

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

Давайте сначала возьмем копию текста, чтобы нам не приходилось писать this.richTextBox_message.Text все время.

string text = this.richTextBox_message.Text;

Мы можем использовать метод Substring, чтобы получить версию строки без первой строки.Для этого мы должны знать, с чего начать и сколько символов мы хотим получить.Substring(int index, int length).

Мы можем использовать IndexOf, чтобы найти первое вхождение символа разделителя строк в тексте.Это будет именно там, где заканчивается линия.Затем мы хотим добавить 1, чтобы не включать разделитель строк в нашем новом тексте.

int startIndex = text.Substring(text.IndexOf('\n') + 1;

Теперь нам нужно найти длину текста, который мы хотим получить.Это просто - нам нужен весь текст от начального индекса, который мы только что нашли, до конца текста.Мы можем вычесть startIndex из длины текста, чтобы получить желаемую длину.

int length = text.Length - startIndex;

Теперь мы можем получить новую строку.

string newValue = text.Substring(startIndex, length);

Наконец запишите ее обратно в свойство text.

this.richTextBox_message.Text = newValue;
...