2 qq 33368531 qq_33368531 于 2017.09.03 11:37 提问

C#中的RichTextBox的内容刷新问题

据我所知,类似QQ、绝大多数的聊天程序的聊天界面的聊天记录显示框都采用了这样的策略:自动接收最新消息并且focus最后一行,也就是将最新消息加到原本最后一行的后面,同时将滚动条滚动到最后一行来显示聊天历史。我最近试着编写了一个类似于QQ的即时通讯程序(属于自学之后的一次小实践吧),聊天记录显示框用的RichTextBox控件(以下简称RTB)。刚开始做这个都的时候只是为了发送文本消息,后来想让其发送图片,方案为RTB+ClipBoard,但是在消息刷新的时候遇到了一个问题。
先说一下刷新消息的方式:
richTextBox1.SelectLenth=richTextBox.TextLengh;
richTextBox1.ScrollToCaret();
原来只显示文本的时候RTB可以瞬间刷新,直接跳转到最后一行;后来加入了图片之后,当RTB中的内容达到一定长度时(出现滚动条),再发图片就会出现刷新延迟。也就是说,接收消息或者发送消息的时候,我得让RTB在添加完了内容之后,滚动条直接跳到最后一行,可是现实是这样的:滚动条从第一行滚动到最后一行,而且速度还挺慢。(这里补充下,虽然本人电脑配置不高,但这应该不是电脑配置问题,因为QQ等类似软件没有出现过这种情况。而且,若是第一次加载则不存在这样的现象)
这里我想问下,大家有没有遇到过类似的情况?
还请大神指点指点初入此门的本渣,本渣以前都是百度来百度去的也没怎么问过人,这次是第一次在CSDN上发帖,故C币也不多(大多拿去下载资源了),故给的C币也多不到哪去,为的只是弄清一个缠绕我很久的问题,同时也能方便大家借鉴学习,共勉!谢谢了各位!

5个回答

qq_33368531
qq_33368531   2017.09.03 18:46
已采纳

找到一个解决方案,之前没有将上面两行代码写在事件中,可能这就是原因。CSDN的APP上搜索到的http://m.blog.csdn.net/kongjibo/article/details/51595060

qq_33368531
qq_33368531   2017.09.03 11:40

纯手机手打,只为快些解决问题,水军勿扰图片说明

qq_33368531
qq_33368531   2017.09.03 18:39

有人吗?图片说明

qq_33368531
qq_33368531   2017.09.03 18:43

上面那个SelectLength是我记错了,实际上是SelectionStart

qq_33368531
qq_33368531   2017.10.17 12:48

貌似自定义控件实现好的多图片说明

Csdn user default icon
上传中...
上传图片
插入图片