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