VB中算出TextBox中目前光标位置

发表于:2007-06-21来源:作者:点击数: 标签:
在很多文字编辑器中,都可以告诉您,目前您的光标是在文字编辑器的第几行,我们也来实作一下! 在 form 中放入一个 textbox 并将 multiline 属性设为 true,放入一个 label 用来显示目前光标所在的行数,在表单声明区中加入以下声明及模组: private declare

   

在很多文字编辑器中,都可以告诉您,目前您的光标是在文字编辑器的第几行,我们也来实作一下!

在 form 中放入一个 textbox 并将 multiline 属性设为 true,放入一个 label 用来显示目前光标所在的行数,在表单声明区中加入以下声明及模组:

private declare function sendmessagelong lib "user32" alias "sendmessagea" _
(byval hwnd as long, _
byval wmsg as long, _
byval wparam as long, _
byval lparam as long) as long

const em_linefromchar = &hc9

function lineno(txthwnd as long) as long
on local error resume next
lineno = sendmessagelong(txthwnd, em_linefromchar, -1&, 0&) + 1
lineno = format$(lineno, "##,###")
end function

′呼叫这个模组时要导入的是 textbox 的 hwnd
′实际使用时,必须在 textbox 的以下几个事件中呼叫这个模组,才会完全正确:
′1. change事件:输入资料时可侦测计算
′2. click 事件:用鼠标移动光标时可侦测计算
′3. keyup 事件:用上下左右键移动光标时可侦测计算

sub text1_change()
label1 = lineno(text1.hwnd)
end sub

private sub text1_click()
label1 = lineno(text1.hwnd)
end sub

private sub text1_keyup(keycode as integer, shift as integer)
label1 = lineno(text1.hwnd)
end sub

原文转自:http://www.ltesting.net