如何在不移动滚动条/光标的情况下删除RichTextBox的旧数据
本文关键字:情况下 删除 RichTextBox 数据 光标 移动 滚动条 | 更新日期: 2023-09-27 18:02:00
我创建了一个richtexbox用于实时日志。如果richtexbox的长度太大,我将删除旧数据(如当前数据的1/3)。
Content.Invoke(new EventHandler(delegate
{
Content.AppendText(msg);
if(Content.Text.Length >100000)
{
Content.Select(0, 50000);
Content.SelectedText = "";
}
}));
我的问题是每当我删除数据,滚动条上升(选择文本)和下降(追加新的文本)。有没有办法防止滚动条上移?
我在计时器中尝试了这个,它看起来很好。显然,当你删除文本时,滚动条会变大,但这应该发生…
private void timer1_Tick(object sender, EventArgs e)
{
richTextBox1.SuspendLayout();
richTextBox1.AppendText( richTextBox1.Text.Length.ToString() +
" some random text of no consequence.....'n");
if (richTextBox1.Text.Length > 10000)
{
richTextBox1.Select(0, 2000);
richTextBox1.SelectedText = "";
}
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.SelectionLength = 0;
richTextBox1.ScrollToCaret();
richTextBox1.ResumeLayout();
}
我假设您总是希望RTB的末尾可见,因此您必须将插入符号带到末尾并使其可见。如果你不这样做,插入符号将在删除文本的顶部后出现在顶部。不需要存储插入符号的位置,,除非你想让它留在其他位置,可能是因为用户把它放在那里…?在这种情况下,你必须采取相应的行动,计算正确的位置!