日期:2014-05-20  浏览次数:20818 次

RichTextBox的怪问题(Winfrom)
用一个RichTextBox保存显示转换程序的LOG,希望能实时显示最后加入的log信息,加了如下自动选择:

private   void   rtOutput_TextChanged(object   sender,   EventArgs   e)
{
        this.rtOutput.SelectionStart   =   this.rtOutput.TextLength;
        this.rtOutput.Select();
}

可是实际跑起来的时候像在放电影,一直在顶端和底端之间切换,每秒各10桢左右,变成都能隐约看得到。;-(

我在后面加:
this.rtOutput.Refresh();
Application.DoEvents();
都没用

------解决方案--------------------
用ListView更简单!
------解决方案--------------------
可以用listbox。
然后用 listbox.selectindex = listbox.items.count-1;就会自动滚动。
------解决方案--------------------
up
------解决方案--------------------
最好在添加的地方加入滚动
而不是在TextChange事件里加

richTextBox1.AppendText(DateTime.Now.ToString() + "\r\n ");
richTextBox1.SelectionStart = int.MaxValue;
richTextBox1.ScrollToCaret();

------解决方案--------------------
重复执行了rtOutput_TextChanged事件
不明白你代码的意思
但在rtOutput_TextChanged事件末尾加上
this.troutput.textchanged-=this......
卸载事件处理
再在必要时添加
可以解决