无法检测到“回车”键的按键事件

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

你是如何将KeyPress事件添加到你的TextBox中的? - Mark Hall
1
圣母 SQL 注入漏洞,蝙蝠侠! - Joel Coehoorn
2
跟进之前的评论:请不要像那样使用字符串拼接来构建你的查询。如果我在你的KdUserTxt框中输入 'DROP TABLE TblUser;-- 会怎么样? - Joel Coehoorn
那么我该怎么办?我是新手,请帮帮我。 - Revan Wijaya
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 键时点击哪个按钮。


3

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接