我为实时日志创建了一个richtexbox。如果richtexbox的长度太大,我将删除旧数据(例如1/3当前数据)。
Content.Invoke(new EventHandler(delegate
{
Content.AppendText(msg);
if(Content.Text.Length >100000)
{
Content.Select(0, 50000);
Content.SelectedText = "";
}
}));
我的问题是每当我删除数据,滚动条上移(选择文本)并向下(添加新文本)。反正有没有阻止滚动条上升?
答案 0 :(得分:0)
我在计时器中试过这个,看起来很好。删除文本时显然滚动条增长,但这应该发生..
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的末端可见,所以你必须把插入物放到最后并且看得见。如果你不这样做,删除文本的顶部后,插入符将位于顶部.. 无需存储插入符号位置,除非您希望它保留在其他位置,可能是因为用户已将其放在那里..?但是,在这种情况下,您必须采取相应行动并计算正确的位置!