无法检测Enter键的KeyPress事件

时间:2012-10-04 15:12:28

标签: vb.net winforms keypress

我正在尝试在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

2 个答案:

答案 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 设置为,以使代码正常工作。