如何在richtextbox中转到某行
 Form链接.Text1.SelStart = SendMessage(Text1.hWnd, EM_LINEINDEX, i - 1, 0&)
i为要转到的某行的行号
不知为何无法转到该行是空行的行 例如假如第2行是空行, 那么我想转到第2行,vb总是无法转到第二行,如果第3行不是空行,那么它就转到第3行------不知是什么原因

解决方案 »

  1.   

    请问各位高手,有没有其他方法在richtextbox中转到某行 能转到该行是空行的行   谢谢
      

  2.   


    Dim a
    a = InStr(RichTextBox1.Text, vbCrLf & vbCrLf)
    If a = 0 Then a = Len(RichTextBox1.Text)
    RichTextBox1.SetFocus
    RichTextBox1.SelStart = a + 1
      

  3.   

    Private Sub Command1_Click()
    Dim n As Long
    n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100)))
    RichTextBox1.SetFocus
    SendKeys "^{home}"
    SendKeys "{down " & n & "}"
    End SubPrivate Sub Form_Load()
    RichTextBox1.Text = Replace(Replace(String(100, "1"), "1", "012340"), "0", vbCrLf)
    End Sub
      

  4.   

    或者:
    Option Explicit
    Const EM_LINESCROLL = &HB6
    Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Long) As Long
    Private Sub Command1_Click()
    RichTextBox1.SetFocus
    RichTextBox1.SelStart = 0
    Randomize
    Dim n As Long
    n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
    SendMessage RichTextBox1.hWnd, EM_LINESCROLL, 0, n&
    End SubPrivate Sub Form_Load()
    Dim i As Long, arr(1 To 500) As String
    For i = 1 To 500
    arr(i) = IIf(i Mod 9 > 7, "", "第" & i & "行")
    Next
    RichTextBox1.Text = Join(arr, vbCrLf)
    End Sub
      

  5.   

    northwolves(狼行天下) 你好
    SendKeys "{down " & n & "}" ------n是什么意思?
    for i=1 to n
    SendKeys "{down}" 
    next
    不过这种方法太废时间,  本来我编的程序的目的是删除空行以及含有空格的空行,假如用这种方法是否太耗时间?
      

  6.   

    northwolves(狼行天下) 你好
    n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
    SendMessage RichTextBox1.hWnd, EM_LINESCROLL, 0, n&  这个代码是不是?这么我试验了,他没反应
      

  7.   

    Dim n As Long
    n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
    SendKeys "{down " & n & "}" ------n是什么意思?n你自己指定
      

  8.   

    northwolves(狼行天下) 你好
    n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
    SendMessage RichTextBox1.hWnd, EM_LINESCROLL, 0, n&  这个代码是不是?这么我试验了,他没反应
    ------------------
    报什么错?贴上你的代码
      

  9.   

    northwolves(狼行天下) 你好Const EM_LINESCROLL = &HB6      Private Declare Function SendMessage Lib "User32" Alias _
          "SendMessageA" _
             (ByVal hWnd As Long, _
              ByVal wMsg As Integer, _
              ByVal wParam As Integer, _
              ByVal lParam As Long) As Long      Private Sub Form_Load()
             Dim intLineIndex As Integer, intWordIndex As Integer         'Initialize Text1.
             Text1.Font = "Courier New"
             Text1.Text = ""
             For intLineIndex = 1 To 25             'Add 25 lines of text.
                Text1.Text = Text1.Text & "Line" & Str$(intLineIndex)
                For intWordIndex = 1 To 5           'Make each line 12 words
                                                    'long.
                   Text1.Text = Text1.Text & " Word" & Str$(intWordIndex)
                Next intWordIndex
                Text1.Text = Text1.Text & vbCrLf
             Next intLineIndex         Command1.Caption = "Vertical"
             Command2.Caption = "Horizontal"
          End Sub      Private Sub Command1_Click()
             Dim lngRet As Long         lngRet = SendMessage(Text1.hWnd, EM_LINESCROLL, 0, 5&)
          End Sub      Private Sub Command2_Click()
             Dim lngRet As Long         lngRet = SendMessage(Text1.hWnd, EM_LINESCROLL, 5, 0&)
          End Sub
    可是这种方法是TextBox 控件的滚动功能,它无法使光标定位,无法  text1.selstart=
      

  10.   

    如果你的回车都是硬回车,可以考虑使用正则表达式对象简化操作。我编的程序的目的是删除空行以及含有空格的空行:
    Private Sub Command1_Click()
    Dim temp As String, s() As String, i As Long
    temp = RichTextBox1.Text
    s = Split(temp, vbCrLf)
    For i = 0 To UBound(s)
    If Len(Trim(s(i))) = 0 Then s(i) = ""
    Next
    temp = Join(s, vbCrLf)
    While InStr(temp, vbCrLf & vbCrLf) > 0
    temp = Replace(temp, vbCrLf & vbCrLf, vbCrLf)
    Wend
    RichTextBox1.Text = temp
    End Sub
      

  11.   

    northwolves(狼行天下) 你好,上面的代码会不会把richtextbox里面的文本格式删除掉?好像会把richtextbox里面的文本格式删除掉
      

  12.   

    如果都是硬回车,可以这样定位:
    Private Sub Command1_Click()
    Randomize
    Dim n As Long, s() As String
    n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
    s = Split(RichTextBox1.Text, vbCrLf)
    ReDim Preserve s(n - 1)
    n = Len(Join(s, vbCrLf)) + Len(vbCrLf)
    RichTextBox1.SetFocus
    RichTextBox1.SelStart = n
    End Sub
      

  13.   

    northwolves(狼行天下) 你好  谢谢你可以定位了  真是谢谢你 高手就是不一样