如果用户在文本框中按Enter键,则捕获

时间:2017-03-30 13:22:08

标签: vb.net events keydown

如果用户按下回车键,我试图抓住Event。如果按照MSDN documentation pages上的说明进行操作。

这是我Event的{​​{1}}代码:

Textbox

我的问题是:当我按下键盘上的任何按钮时,Private Sub tbOccurrenceElevation_KeyDown(sender As Object, e As KeyEventArgs) Handles tbOccurrenceElevation.KeyDown ' Check if the enter key is pressed If e.KeyCode = Keys.Return Then OccurrenceElevation_Changed() End If End Sub 被触发,但当我按下回车键时,没有任何反应?

我尝试将Event属性更改为Textbox,但没有运气。

额外信息:文本框位于UserControl上,而不是表单控件。

2 个答案:

答案 0 :(得分:1)

如果其他内容阻止文本框接收回车键,您可以尝试覆盖UserControl的{​​{3}}。

它可能有效,但这一切都取决于事件链中父母拦截消息的位置。

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean
    If keyData = Keys.Return AndAlso tbOccurrenceElevation.Focused = True Then
        'Do your stuff here.
        Return True 'We've handled the key press.
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
End Function

答案 1 :(得分:0)

试试这个:

Private Sub tbOccurrenceElevation_KeyDown(sender As Object, e As KeyEventArgs) Handles tbOccurrenceElevation.KeyDown

    ' Check if the enter key is pressed
    If e.KeyCode = Keys.Enter or e.KeyCode = Keys.Return Then
        OccurrenceElevation_Changed()
    End If

End Sub

你必须记住大多数键盘都有Enter和Return。这些代码是不同的,所以你必须包括它们