0

我有一个用户控件的情况,它只包含一个文本框,并且与 VB6 中的行为有很大不同。
必要性是在某些情况下取消 key.Down 的 usercontrol 提到它不会触发此事件(在外部程序中)。
在那里,我尝试将文本框的 _KeyDown 事件处理程序放入用户控件 e.handled = true 和 e.suppressKeyPress = true 但没有结果。
用户控件仍会通过击键发出 KeyDown 事件。

Private Sub myText_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles myText.KeyDown

If e.KeyCode = Keys.Down Then 
    If stop_Down Then    'property
        e.Handled = True
        e.SuppressKeyPress = True
        Exit Sub
    End If
End If

程序正确地通过此代码关于属性。
但不要抑制用户控件的 _KeyDown 事件。

在上面代码中显示的情况下,如何抑制从用户控件触发的 _KeyDown 事件?

4

1 回答 1

1

您可以覆盖该ProcessCmdKey功能。这是接收击键的链中的第一个函数。

返回 true 并且链的其余部分将不会收到笔画。

例如(对于用户控件):

Protected Overrides Function ProcessCmdKey(ByRef msg As Forms.Message, _
                                           keyData As Forms.Keys) As Boolean

    If MyCriteriasToIgnoreStroke Then
        Return True
    End If

    Return MyBase.ProcessCmdKey(msg, keyData)

End function
于 2012-12-17T22:50:40.597 回答