从附加文本中删除第一行

时间:2019-02-08 08:26:23

标签: c# user-interface richtextbox

我在Visual Studio中使用Richtextbox挣扎。我从串行接口(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 :(得分:1)

紧凑版本

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

说明

由于stringsimmutable,所以我们必须创建一个没有第一行的新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到文本结尾的所有文本。我们可以从文本长度中减去startIndex以获得所需的长度。

int length = text.Length - startIndex;

现在我们可以获取新的字符串了。

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

最后将其写回text属性。

this.richTextBox_message.Text = newValue;

答案 1 :(得分:0)

richTextBox1.Lines = richTextBox1.Lines.Skip(1).Take(richTextBox1.Lines.Length -1).ToArray();