2012-10-05 56 views
8

如果我追加一些RTB自动向下滚动的文本,我该怎么做?RichTextBox中的自动滚动C#WinForms

现在我使用的是:

conversationRtb.Rtf = tab.conversationRtb.Rtf; 
conversationRtb.SelectionStart = conversationRtb.Text.Length; 
conversationRtb.ScrollToCaret(); 

但都不尽如人意。有时它不会在结束前滚动结束,而只是一行。

rtb scroll down bug

有时会产生很大的偏差。

rtb scroll down bug

我找不到原因。有没有其他方式向下滚动?我发现AutoScrollOffset,但没有例子它的工作原理。

+3

这两个帖子可能有帮助。他们使用'User32.dll'来滚动。 http://stackoverflow.com/questions/8535102/inconsistent-results-with-richtextbox-scrolltocaret http://www.dutton.me.uk/2011/08/31/richtextbox-scrolltocaret-bug/ – keyboardP

+0

我宁愿不要使用user32.dll。我正在使用单声道,而且我遇到了外部库的问题。 – sczdavos

+0

好的。我只是添加条件。如果Windows执行@keyboardP解决方案,则执行默认的ScrollToCaret。似乎工作正常。 – sczdavos

回答

7

您可以调整HideSelection value to false,AppendText将触发正确的滚动。

+0

我试过但不适合我:( – sczdavos

+0

你在winforms ???或wpf(ScrollToEnd) –

+0

哦对不起,是的,我使用winforms。我已经更新了标签。 – sczdavos