如题.请各位老师不吝赐教!
比如一个textbox里面的内容如下:123
321
456
654这样的话,怎么样才能取得第一行的内容,及以下第二行、第三行、第四行...第N行的内容?
比如一个textbox里面的内容如下:123
321
456
654这样的话,怎么样才能取得第一行的内容,及以下第二行、第三行、第四行...第N行的内容?
解决方案 »
- 如何让MDB某表的所有数据自动插入SQL对应字段的表中.
- datagrid 的编辑与列宽问题
- 高手请进来帮帮忙啊..
- 用VB编写的EXE窗体程序能不能和嵌在网页中的ocx进行通信,怎么样通信?ocx也是VB编写的。
- 如何取得 TextBox 的位置
- 如何知道表中的字段是否允许空值?
- 请教各位大哥:如何在文件对话框的同一个窗体上开一个图形预览窗口?
- 当鼠标在桌面活动是,如何捕捉到鼠标事件,将其单击右键失灵?
- 再次100分问!关于MSFLEXGRID的问题
- 关于窗体变量
- Combo与MonthView之间的问题
- 一个项目组中,有两个dll项目,其中一个项目要引用另一个项目.为何无法编译其中一个项目的dll呀?必须先把另一个项目编成dll,然后引用dll才
Option Explicit
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)
Sub TB_GetLine(ByVal hWnd As Long, ByVal whichLine As Long, Line As String)
Dim length As Long, bArr() As Byte, bArr2() As Byte, 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 Command1_Click()
Dim S As String
Call TB_GetLine(Text1.hWnd, 4, S) '// 取第4行资料
MsgBox S
End Sub
Private Sub Form_Load()
Dim NL As String
NL = Chr(13) + Chr(10)
Text1.Text = "jaljfkl" & NL & "jaljkdl" & NL & "70ur908400" & NL & "hdjfl" & NL & "1314" & NL & "520"
End Sub
参数whichLine是从0开始的,
Call TB_GetLine(Text1.hWnd, 4, S)
其实S获取的是第5行而不是第4行的内容
要获取第n行的内容,应该是
Call TB_GetLine(Text1.hWnd, n-1, S)
然后S就是第n行的内容了
SendMessage 是关键