我正在尝试在VB.NET 2008中使用KeyPress事件,但它无法正常工作。任何人都可以帮我弄清楚这段代码有什么问题吗?此消息框不会出现,我的数据库中的状态也不会出现。该程序说没关系,但它没有用。
If e.KeyChar = Chr(Keys.Enter) Then
tblLogin = Proses.ExecuteQuery("Select * From TblUser where kode_user = '" & KdUserTxt.Text & "'")
If tblLogin.Rows.Count = 0 Then
MessageBox.Show("Kode User Not Found!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
KdUserTxt.Focus()
Else
StatusTxt.Text = tblLogin.Rows(0).Item("status")
PswTxt.Focus()
End If
End If
答案 0 :(得分:4)
您不应该使用KeyPress
事件来捕获控制键,例如回车键。相反,您应该使用KeyDown
事件。 KeyDown
允许您捕获键盘上的任何物理键。例如:
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
MessageBox.Show("Enter key pressed")
End If
End Sub
但是,完成此类操作的常规方法是在表单中添加一个按钮,例如“确定”或“提交”按钮。然后,在表单的属性中,将AcceptButton
属性设置为该按钮。然后,当用户按下Enter键时,WinForm框架将自动为您调用该按钮的click事件。同样,CancelButton
属性设置当用户按下Escape键时单击哪个按钮。
答案 1 :(得分:3)
如果您设置了 WinForm的 AcceptButton 属性,则无法捕获 Enter 键 KeyDown 事件强>
将所需WinForm的属性 AcceptButton 设置为无,以使代码正常工作。