能不能先用LineCount属性得到总行数,再使CurLine为LineCount的一半。

解决方案 »

  1.   

    试试这个代码:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const SB_LINEDOWN = 1
    Private Const SB_LINEUP = 0
    Private Const EM_LINEFROMCHAR = &HC9
    Const WM_VSCROLL = &H115
    Dim oldcol As Long
    Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
        Dim ret As Long
        ret = SendMessage(RichTextBox1.hwnd, EM_LINEFROMCHAR, -1, 0)
            
        If ret > oldcol Then
            oldcol = ret
            SendMessage RichTextBox1.hwnd, WM_VSCROLL, SB_LINEDOWN, 0
        ElseIf ret < oldcol Then
            oldcol = ret
            SendMessage RichTextBox1.hwnd, WM_VSCROLL, SB_LINEUP, 0
        End If
    End Sub