【问题标题】:Unable to detect KeyPress event for Enter key无法检测 Enter 键的 KeyPress 事件
【发布时间】:2012-09-25 16:10:02
【问题描述】:

我正在尝试在 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 中?
  • Holy Sql 注入漏洞,蝙蝠侠!
  • 跟进之前的评论:不要使用这样的字符串连接来构建您的查询。如果我在您的 KdUserTxt 框中输入类似 'DROP TABLE TblUser;-- 的内容会怎样?
  • 那我该怎么办?我是新手,请你帮忙..

标签: vb.net winforms keypress


【解决方案1】:

您不应该使用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 键时单击哪个按钮。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 1970-01-01
      • 2011-12-24
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 2017-11-23
      相关资源
      最近更新 更多