
'获得光标位置(按字节计算,起如行和起始列均为0)
Private Function GetCurPos(ptPos As POINTAPI) As Long
Dim nLine As Long, nCol As Long
Call SendMessage(MeText1hwnd, EM_GETSEL, 0, ptPos)
nLine = SendMessage(MeText1hwnd, EM_LINEFROMCHAR, ptPosx, ByVal 0&) '获得行号
nCol = ptPosx - SendMessage(MeText1hwnd, EM_LINEINDEX, -1, 0) '获得列号
GetCurPos = ptPosx '光标位置(按字节计算)
ptPosy = nLine
ptPosx = nCol
End Function
'获得光标位置(按字符计算)
Private Function GetCurPosCh(ptPos As POINTAPI) As Long
Dim nLine As Long, nCol As Long
Dim ByteBuffer() As Byte
SendMessage MeText1hwnd, EM_GETSEL, 0, ptPos
nLine = SendMessage(MeText1hwnd, EM_LINEFROMCHAR, ptPosx, ByVal 0&) '获得行号
nCol = ptPosx - SendMessage(MeText1hwnd, EM_LINEINDEX, -1, 0)
ReDim ByteBuffer(1024)
ByteBuffer(1) = 4
SendMessage MeText1hwnd, EM_GETLINE, nLine, ByteBuffer(0)
ReDim Preserve ByteBuffer(nCol)
nCol = Len(StrConv(ByteBuffer, vbUnicode)) - 1 '获得列号
GetCurPosCh = MeText1SelStart '光标位置(按字符计算)
ptPosy = nLine + 1
ptPosx = nCol + 1
Erase ByteBuffer
End Function
Call GetCurPosCh(ptPos)
GetTextInfo = " 第 " & ptPosy & " 行 , 第 " & ptPosx & " 列"
通过查找换行符,vb中的回车(vbLf,或Chr(10))和换行(vbCr,或Chr(13))比较特别,也比较混乱。如果是输出到屏幕,则:单用回车,单用换行,先用换行再用回车,这三种情况下都是从当前行换到下一行去,而先用回车再用换行,就会从当前行往下连续走两行。
如果是输出到文本框(要求允许多行显示),除了换行加回车,才会真正换行外,其他的都不换行,但回车和换行都会各占一个字符的长度。为了统一起见,一般就用vbCrLf(或Chr(13) & chr(10))表示换行加回车。
获得一个字符串的行数:
判断chr(10)+chr(13)的个数
获得一个字符串其中任意一行的内容
用Mid(string,
start,
length)
start为那一行启始值,启始值还要通过判断chr(10)+chr(13)
本人QQ:453628001
BEAR-BEN
VB
自学的
以上就是关于在VB中如何获取TextBox的行数全部的内容,包括:在VB中如何获取TextBox的行数、vb记事本如何实现显示行号功能、VB如何获得一个字符串的行数和其中任意一行的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)