我在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
答案 0 :(得分:1)
紧凑版本
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到文本结尾的所有文本。我们可以从文本长度中减去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();