通过两个按键的时间差来判断。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网页空间、营销软件、网站建设、凤县网站维护、网站推广。
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Static Last As Double = -1
If e.KeyChar = vbCr Then
If Microsoft.VisualBasic.Timer() - Last 0.3 Then
Debug.Print("enter")
Last = -1
Else
Last = Microsoft.VisualBasic.Timer()
End If
End If
End Sub
事实上 KeyPress、KeyDown、KeyUp、Change这四种事件过程都可以判断是否按了回车键:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then MsgBox "你按了回车键!"
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then MsgBox "你按了回车键!"
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then MsgBox "你按了回车键!"
End Sub
Private Sub Text1_Change()
If Mid(Text1.Text, Text1.SelStart, 1) = vbLf Then MsgBox "你按了回车键!"
End Sub
相比较而言,用Change事件来实现是最笨、最不适合的方式,只能在多行文本框(MulitLine属性为True)使用,而且会出现误判的情况(自己试试就知道)。最佳方式是KeyPress,没有为什么,它就是最佳。
如果是简单的换行用vbcrlf 或 environment.newline
要获得键盘的回车键用api 的
Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
在文本框的keypress事件里写代码。
private sub text1_keypress(KeyAscii As Integer)
if keyascii = vblf then
c=text1.text
endif
end sub
上面 if keyascii = vblf then 的条件判断,是否可行,需要你试一下。vblf可能要改成vbcr或者vbcrlf。
在vb里,常量vbcr对应回车键的ascii,就是10;常量vblf对应换行键的ascii,就是13;vbcrlf是回车加换行。