一、自动选择文本内容
设置文本框的SelStart和SelLength属性值即可完成文本的选择,SelStart为文本选择的起点,SelLength为文本选择的长度。如果选择
Text1中的所有文本内容,代码如下:
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
Text1.SetFocus '必须让文本框获得焦点
二、文本输入完毕按回车键时消声
文本的输入往往都以回车键结束,但是系统会发出“嘀”的一声,为了消除这种不愿意听到的声音,只要在文本控件的KeyPress事件中添
加以下代码即可:
If KeyAscii = 13 Then
KeyAscii = 0 'KeyAscii是输入文本的ASCII码值,下同。
'这里可添加按回车键要执行的代码
End If
三、如何让文本框只能输入数字
在一些特定的输入环境下,有时只需输入阿拉伯数字,为了防止输入的错误,需要禁止其它数据的输入,完成这项功能方法是:检测输入
文本的ASCII码值,将不符合输入要求的过滤,实现的程序代码如下:
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
Beep '这里加入了错误输入报警
End If
四、让文本框具有只读属性
程序编写中,有时需要用文本框来显示数据,并希望该数据不得修改,这时要求文本框具有只读属性,实现的方法是使用Locked=true属性
五、检测多行文本框的总行数
此功能由API函数SendMessage完成,调用此函数向文本框发送EM_GETLINECOUNT消息即可得到文本框的总行数,范例程序代码如下:
'API函数声明,后面的代码中将不再重复
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 Const EM_GETLINECOUNT = &HBA
Dim ret As Integer
ret = SendMessage(Text4.hwnd, EM_GETLINECOUNT, 0, 0)
MsgBox "此文本框共有 " + CStr(ret) + " 行文本。"
六、获取光标在多行文本框中的位置
调用SendMessage函数向文本框发送EM_GETSEL消息可得到光标位置之前的文本长度,发送EM_LINEINDEX消息可得到光标所在行之前的文本
行的文本长度,二者的差就是光标在所在行中的列;发送EM_LINEFROMCHAR消息可得到光标在文本框中的行数,范例程序代码如下:
Private Const EM_GETSEL = &HB0
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINEFROMCHAR = &HC9
Dim iX, iY, iL, iL1, iL2 As Long
SendMessage Text4.hwnd, EM_GETSEL, iL1, iL2
iL = SendMessage(Text4.hwnd, EM_LINEINDEX, -1, 0)
iX = iL2 - iL
iY = SendMessage(Text4.hwnd, EM_LINEFROMCHAR, -1, 0)
MsgBox "当前列:" + Str(iX) + Chr(13) + "当前行:" + Str(iY)
七、读取多行文本框某行的文本
调用SendMessage函数向文本框发送EM_GETLINE消息可得到某行的文本内容,范例程序代码如下:
Private Const EM_GETLINE = &HC4
Dim ret As String
Dim cline As Long
ret = Space(1024)
'获取光标行
cline = SendMessage(Text4.hwnd, EM_LINEFROMCHAR, -1, 0)
SendMessage Text4.hwnd, EM_GETLINE, cline, ByVal ret
ret = RTrim(ret) '去掉右侧多余的空格
八、撤销上次文本输入
调用SendMessage函数向文本框发送EM_UNDO消息即可实现撤销功能,范例程序代码如下:
Private Const EM_UNDO = &HC7
SendMessage Text4.hwnd, EM_UNDO, 0, 0
九、复制选择内容到剪贴板
调用SendMessage函数向文本框发送EM_COPY)消息即可将选择的文本复制到剪贴板上(EM_CUT剪贴、EM_PASTE粘贴,范例程序代码如下:
'全选
Text4.SelStart = 0
Text4.SelLength = Len(Text4.Text)
Text4.SetFocus
SendMessage Text4.hwnd, WM_COPY, 0, ByVal 0&
十、获取中英混合文本的长度
很多情况下,计算中英混合字符串长度,我们希望中文字长度以2计算,英文字母长度以1计算,要完成这项功能,需要联合使用VB中的
LenB和Strconv函数,Strconv的作用是字符串内容的转换,第二个参数VbFromUnicode的作用是把“双字节”的字符串转换成中文字占2个字节
、英文占用1个字节的字符串,接着调用LenB函数即可获得文本长度。范例程序代码如下:
Dim ret As Integer
ret = LenB(StrConv(Text5.Text, vbFromUnicode))
MsgBox "长度为 " + CStr(ret) + " 个字符位"