【问题标题】:How to suppress key events of usercontrol如何抑制用户控件的关键事件
【发布时间】:2012-12-18 06:55:40
【问题描述】:

我的用户控件只包含一个文本框,这与 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事件?

【问题讨论】:

    标签: vb.net


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2015-01-20
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多