解决Form或UserControl接收不到KeyDown等事件
- 摘要:当Form包含自定义控件,或UserControl存在嵌套时,外层的对象就会接收不到KeyDown等事件了,但是,我们可以通过override基类的ProcessDialogKey方法来达到同样的效果
当Form包含自定义控件,或UserControl存在嵌套时,外层的对象就会接收不到KeyDown等事件了,但是,我们可以通过override基类的ProcessDialogKey方法来达到同样的效果,比如:
protected
override
bool ProcessDialogKey(
Keys keyData)
{
#region PageDown
if (keyData == Keys.PageDown)
{
}
#endregion
return true;
}
{
#region PageDown
if (keyData == Keys.PageDown)
{
}
#endregion
return true;
}
你试一下重载一下ProcessKey这个过程,在ProcessKey里面看看能不能截获。如果不能,你试一下重载ProcessCmdKey,在里面截获。
Protected Overrides Function ProcessCmdKey(ByVal msg As Message, ByVal KeyData As Keys) As Boolean
Select Case KeyData
Case Keys.Up
... '相应处理
Return True ' 表示已经处理完毕,不要再执行省缺的动作。
Case Keys.Right
...
...
End Select
Return False
End Function
Protected Overrides Function ProcessCmdKey(ByVal msg As Message, ByVal KeyData As Keys) As Boolean
Select Case KeyData
Case Keys.Up
... '相应处理
Return True ' 表示已经处理完毕,不要再执行省缺的动作。
Case Keys.Right
...
...
End Select
Return False
End Function