2008-10-15 62 views

回答

10

这是我做的:

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)); 

似乎工作确定 - 你可能需要调整的东西一点,但。

希望有所帮助。

+0

我应该在哪里调用SendMessage? – Nick 2017-03-12 10:14:45

0

window.scrollBy(0,20);

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

0

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

1

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

您还可以使用丰富的编辑选择方法,在这里设置的字符索引(你可以用EM_LINEINDEX获得),然后调用RichEdit.ScrollToCaret即:

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

这将滚动该行顶端的编辑控件。