VB中接受键盘事件(主要就是回车键)

friendoyc 2005-12-28 07:32:04
一开始有一个登陆窗口,点击确定键变可在数据库端验证用户名和密码,但是在窗体接受键盘事件是我却不知道该怎么写了,是用Keypress吗?
这里只写了OK键被鼠标按下时,并不响应键盘事件
Private Sub cmdok_click()
Dim txtsql As String, mrc As ADODB.Recordset, msgtext As String
Dim miscount As Integer
If Trim(txtUserName.Text = "") Then
MsgBox "用户名不为空,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtUserName.Text = "": txtUserName.SetFocus: Exit Sub
Else
txtsql = "Select * from user_info where user_id='" & _
Trim(txtUserName.Text) & "'"
msgtext = ""
Set mrc = executeSQL(txtsql, msgtext)
End If

If mrc.EOF = True Then
MsgBox "用户名出错,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtUserName.SelStart = 0: txtUserName.SelLength = Len(txtUserName.Text)
txtUserName.SetFocus: Exit Sub
Else
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then 'OK=True
mrc.Close: UserName = Trim(txtUserName.Text)
frmmain.Show: Unload Me
Else
MsgBox "密码出错,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.Text = "": txtPassword.SetFocus: Exit Sub
End If
End If
miscount = miscount + 1
If miscount = 3 Then
MsgBox "尝试数超3次,您无权使用本程序", vbExclamation, "警告"
End
End If
End Sub
...全文
812 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
friendoyc 2005-12-31
  • 打赏
  • 举报
回复
感谢各位~
Free_Windy 2005-12-30
  • 打赏
  • 举报
回复
贴可以收回的吗,,,?怎样收?
xihongjian 2005-12-30
  • 打赏
  • 举报
回复
笨办法!!试试
xihongjian 2005-12-30
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
MsgBox "sdfsdafa"
End Sub

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Command1_Click
End If
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
MsgBox "dfsdfsa"
End If
End Sub
xihongjian 2005-12-30
  • 打赏
  • 举报
回复
要是你的窗口你出了Commandbutton控件跟text控件的话就可以先在Commandbutton的键盘事件里写代码.然后在窗口的键盘时间里写代码.麻烦点但是也是一个解决的办法.
northwolves 2005-12-29
  • 打赏
  • 举报
回复
可以写到这里:

private Sub txtPassword_keydown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then cmdok_Click //在此调用确定事件?
End Sub
sparkwong 2005-12-29
  • 打赏
  • 举报
回复
你焦点不要放在Command控件上啊,这些控件都会优先接受回车键处理Click事件的吧
friendoyc 2005-12-29
  • 打赏
  • 举报
回复
txtpassword_keydown只是在密码匡中才接受键盘时间吧,如果要在别的控件中都可以自由的响应键盘事件该怎么做了?比如说当焦点在form的时候。
friendoyc 2005-12-28
  • 打赏
  • 举报
回复
哦,谢谢大家的意见了,不过我刚刚试了下keydown和keypress好象都不行(不知道是不是我理解错了)

我已经在窗体的属性设置里面把keypreview设置成true,然后在frmlogin(登陆窗口)中写了:
Private Sub frmlogin_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then cmdok_Click //在此调用确定事件?
End Sub

但是还是不行啊,希望大家再给个主意,谢了。
Dickson 2005-12-28
  • 打赏
  • 举报
回复
同意楼上
sparkwong 2005-12-28
  • 打赏
  • 举报
回复
是keypress啊,不过窗体的keypreview要设为true
chengqiu_123 2005-12-28
  • 打赏
  • 举报
回复
收回我发的帖,刚刚试了一下,是True.听星级大哥的
chengqiu_123 2005-12-28
  • 打赏
  • 举报
回复
改Default属性,不过感觉好象是改为False
faysky2 2005-12-28
  • 打赏
  • 举报
回复
写代码的也行:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then cmdok_Click
End Sub


Private Sub Form_Load()
Me.KeyPreview = True
End Sub
faysky2 2005-12-28
  • 打赏
  • 举报
回复
把cmdok的Default属性设置为True

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧