字符个数:dim nlen
nlen=Len(RichTextBox1.Text)
*****************
行数:
Dim nchar As Integer
Dim i As Integer
dim linecount as integer
i = 0
While (RichTextBox1.GetLineFromChar(i) = 0)
    i = i + 1
Wend
nchar = i
linecount = (nlen \ nchar) + 1
******************************
任意一行:
line3=mid(RichTextBox1,nchar*2,nchar)

解决方案 »

  1.   

    Dim  lNums , lRows As  Long 
            Dim  sRowTexts()  As  String
            Dim  lYourRow  As  Long
            Dim  sText  As String        sRowTexts() = Split(RichTextBox1.Text,  vbCrLf)
            lNums = Len(RichTextBox1.Text)    '字符个数
            lRows =  UBound(sRowTexts) +  1   '行数
            lYourRow = 3
            sText = sRowTexts(lYourRow -1)    '第lYourRow行的文本
      

  2.   

    我也很想知道,
    不过有两个很蠢的方法:
    其一:
         用SendKeys将光标定位到首行,然后,再发送N次光标下移的消息,移到目标行后,再发送消息获取那行的内容.    
        For i = 1 To 6
            ddd = ddd & "{DOWN}"
        Next
        SendKeys "^{HOME}" & ddd & "+{END}"
     
    我想既然有 SendMessage(RichTextBox1.hwnd, EM_GETLINECOUNT, 0, 0)能够获知有几行,应该就有什么其他的消息,来完成上面程序的动作。其二: 
        也就是我曾用过的,根据控件的宽度,字体的大小,用TextWidth获知文本的宽度,这样就可以用程序做到和RichTextBox一模一样的换行效果来,当然这时要知道第几行的内容,那是很容易的事.
      

  3.   

    字符个数:dim nlen
    nlen=Len(RichTextBox1.Text)
    *****************
    行数:
    Dim nchar As Integer
    Dim i As Integer
    dim linecount as integer
    i = 0
    While (RichTextBox1.GetLineFromChar(i) = 0)
        i = i + 1
    Wend
    nchar = i
    linecount = (nlen \ nchar) + 1
    ******************************
    任意一行:
    line3=mid(RichTextBox1,nchar*2,nchar)如何早知道这么简单的方法,就好了.
      

  4.   

    fokker(独孤龙)
    richtextbox是自动换行的。
    没有vbCrLf的
      

  5.   

    nlen=Len(RichTextBox1.Text)
    *****************
    行数:
    Dim nchar As Integer
    Dim i As Integer
    dim linecount as integer
    i = 0
    While (RichTextBox1.GetLineFromChar(i) = 0)
        i = i + 1
    Wend
    nchar = i
    linecount = (nlen \ nchar) + 1
    ******************************
    任意一行:
    line3=mid(RichTextBox1,nchar*2,nchar)
    这个方法有毛病,如果一行的字符个数不同怎么办,而且len()加了vbCrLf的长度,i得到的是不加vbCrLf的长度,用
    Dim  lNums , lRows As  Long 
            Dim  sRowTexts()  As  String
            Dim  lYourRow  As  Long
            Dim  sText  As String        sRowTexts() = Split(RichTextBox1.Text,  vbCrLf)
            lNums = Len(RichTextBox1.Text)    '字符个数
            lRows =  UBound(sRowTexts) +  1   '行数
            lYourRow = 3
            sText = sRowTexts(lYourRow -1)
    到是比较好,只是lRows=UBound(sRowTexts)+1,要改成lRows=UBound(sRowTexts),谢谢各位给我指点
      

  6.   

    好像还是不行,虽然已经结贴,我还得说上一句
    richtextbox中没有vbcrlf,故我还是不能用
            Dim  lNums , lRows As  Long 
            Dim  sRowTexts()  As  String
            Dim  lYourRow  As  Long
            Dim  sText  As String        sRowTexts() = Split(RichTextBox1.Text,  vbCrLf)
            lNums = Len(RichTextBox1.Text)    '字符个数
            lRows =  UBound(sRowTexts) +  1   '行数
            lYourRow = 3
            sText = sRowTexts(lYourRow -1)
            成功.而下面的方法也不成功    
        nLen = Len(RichTextBox1.Text)
        *****************
    行数:
        Dim nchar As Integer
        Dim i As Integer
        Dim linecount As Integer
        i = 0
        While (RichTextBox1.GetLineFromChar(i) = 0)
            i = i + 1
        Wend
        nchar = i
        linecount = (nLen \ nchar) + 1
        ******************************
    任意一行:
        line3 = Mid(RichTextBox1, nchar * 2, nchar)
        
        
        这个方法有毛病,如果一行的字符个数不同怎么办我在上面的基础上,用下面的方法,其实和上面的思路是一样的.
    Private Function getRowText(mIndex As Integer) As String
        Dim nLen As Integer, i As Integer
        Dim nFirst As Integer, nEnd As Integer
        nLen = Len(RichTextBox1)
        
        '获取行的首位置
        For i = 0 To nLen - 1
            If RichTextBox1.GetLineFromChar(i) = mIndex - 1 Then Exit For
        Next
        nFirst = i
        
        '获取行的末位置
        For i = nFirst To nLen
            If RichTextBox1.GetLineFromChar(i) = mIndex Then Exit For
        Next
        nEnd = i
        
        '因为GetLineFromChar(i)是以0为起点,而Mid以1为起点,所以要nFirst+1
        getRowText = Mid$(RichTextBox1.Text, nFirst + 1, nEnd - nFirst)
    End Function