3

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

2 回答 2

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 框架会自动为您调用该按钮的单击事件。同样,该CancelButton属性设置当用户按下 Escape 键时单击哪个按钮。

于 2012-10-04T15:22:32.523 回答
3

如果您设置了WinForm的AcceptButton属性,您将无法捕获EnterKeyDown事件。

将所需 WinForm的属性AcceptButton设置为none以使您的代码正常工作。

于 2015-02-22T09:41:04.917 回答