vb中的textbox中的数据为第一行123,第二行456,第三行789,如何读取并显示在另外三个text中

如题所述

假设来源文本框为text1,目的文本框依次为text2,text3,text4。
用到API函数。下面给出完整代码。已经测试成功。
Private Const EM_GETLINE = &HC4
Private Const EM_LINELENGTH = &HC1
Private Const EM_LINEINDEX = &HBB

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 Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)

Private Sub TB_GetLine(ByVal hWnd As Long, ByVal whichLine As Long, Line As String)

Dim length As Long
Dim bArr() As Byte
Dim bArr2() As Byte
Dim lc As Long

lc = SendMessage(hWnd, EM_LINEINDEX, whichLine, ByVal 0&)
length = SendMessage(hWnd, EM_LINELENGTH, lc, ByVal 0&)

If length > 0 Then
ReDim bArr(length + 1) As Byte, bArr2(length - 1) As Byte
Call RtlMoveMemory(bArr(0), length, 2)
Call SendMessage(hWnd, EM_GETLINE, whichLine, bArr(0))
Call RtlMoveMemory(bArr2(0), bArr(0), length)
Line = StrConv(bArr2, vbUnicode)
Else
Line = ""
End If

End Sub

Private Sub Form_Load()
Dim S As String

Call TB_GetLine(Text1.hWnd, 0, S)
Text2.Text = S
Call TB_GetLine(Text1.hWnd, 1, S)
Text3.Text = S
Call TB_GetLine(Text1.hWnd, 2, S)
Text4.Text = S
End Sub
温馨提示:答案为网友推荐,仅供参考
相似回答