如何将滚动条向上移动一行? (在C#RichTextBox中)

对于我的C#RichTextBox,我想以编程方式执行与单击垂直滚动条顶部的向上箭头相同的操作,这会将RichTextBox显示向上移动一行。 这是什么代码? 谢谢!

这是我做的:

using System.Runtime.InteropServices; [DllImport("user32.dll")] static extern int SendMessage(IntPtr hWnd, uint wMsg, UIntPtr wParam, IntPtr lParam); 

然后打电话:

 SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1)); 

似乎工作正常 – 但你可能需要稍微调整一下。

希望有所帮助。

为了将来参考,EM_LINESCROLL消息是您发送到任何多行编辑控件以设置滚动位置的消息。 您可以垂直或水平滚动。 有关详细信息,请参阅MSDN

您还可以使用Rich Edit Selection方法设置字符索引(可以使用EM_LINEINDEX获得),然后调用RichEdit.ScrollToCaret,即:

 RichEdit.SelectionStart = SendMessage(RichEdit.Handle, EM_LINEINDEX, ScrollTo, 0); RichEdit.ScrollToCaret(); 

这会将该行滚动到编辑控件的顶部。

window.scrollBy(0,20);

这将滚动窗口。 20是我过去使用的近似值,通常等于一行…但当然字体大小可能会影响一行的实际距离。

如果您可以获得富文本框的滚动控件,您应该能够获取其SmallChange属性并使用它来滚动文本。