Control.ProcessCmdKey 方法

Control.ProcessCmdKey 方法

处理命令键。

[Visual Basic]
Protected Overridable Function ProcessCmdKey( _
   ByRef msg As Message, _
   ByVal keyData As Keys _
) As Boolean
[C#]
protected virtual bool ProcessCmdKey(
   ref Message msg,
   Keys keyData
);
[C++]
protected: virtual bool ProcessCmdKey(
   Message* msg,
   Keys keyData
);
[JScript]
protected function ProcessCmdKey(
   msg : Message,
   keyData : Keys
) : Boolean;
参数
msg
通过引用传递的 Message,它表示要处理的窗口消息。
keyData
Keys 值之一,它表示要处理的键。
返回值

如果字符已由控件处理,则为 true;否则为 false

备注

在消息预处理过程中调用此方法,以处理命令键。命令键是始终比常规输入键具有优先权的键。命令键的示例包括快捷键和菜单快捷方式。此方法必须返回 true,以指示它已经处理完命令键,或者 false,以指示该键不是命令键。仅当控件承载在 Windows 窗体应用程序中或充当 ActiveX 控件时,才调用此方法。

ProcessCmdKey 方法首先确定控件是否有 ContextMenu,如果有,则允许 ContextMenu 处理命令键。如果命令键不是菜单快捷方式,且控件有父级,那么该键传递到父级的 ProcessCmdKey 方法。净效果是命令键在控件层次结构中向上“冒”。除了用户按下的键外,键数据还指示哪些(如果有的话)修改键与该键同时按下。修改键包括 SHIFT、CTRL 和 ALT 键。

对继承者的说明:  在派生类中重写 ProcessCmdKey 方法时,控件应返回 true 以指示它已处理该键。对于未由该控件处理的键,应返回调用基类的 ProcessCmdKey 方法的结果。控件很少需要重写此方法(即使有的话)。

要求

平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列

 

例子:

Private Const WM_KEYDOWN = &H100
    Private Const WM_KEYUP = &H101
    Private Const WM_SYSKEYDOWN = &H104
    Private Const WM_SYSKEYUP = &H105

    Public Shadows Event KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
        If msg.Msg = WM_KEYDOWN OrElse msg.Msg = WM_SYSKEYDOWN Then
            If keyData = Keys.Enter AndAlso MyBase.CurrentCell IsNot Nothing AndAlso MyBase.CurrentCell.ReadOnly = False Then
                '对当前编辑的表格回车提交输入更改
                MyBase.EndEdit()
            End If

            Dim arg As New KeyEventArgs(keyData)
            RaiseEvent KeyDown(Me, arg)
            If arg.Handled OrElse arg.SuppressKeyPress Then
                Return True
            Else
                '把其他的系统键发送出去
                Return MyBase.ProcessCmdKey(msg, keyData)
            End If
        End If
    End Function

vb2005中调试通过 .........

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值