C# 实现自定义处理窗体按键(整理)

本文介绍如何在C#中使用Form.ProcessCmdKey方法实现窗体在获得焦点时,响应特定的多按键组合操作,如类似QQ的Ctrl+Enter发送信息功能。提供了具体代码示例,展示如何在按下Ctrl+Enter时弹出对话框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      很多时候我们需要用到使用C#代码实现在窗体是在当前焦点时,进行其它多按键操作。比如类似于QQ的Ctrl+Enter发送信息的操作。这时候使用Form.ProcessCmdKey 方法是非常好的解决方案。下面是MSDN的相关信息:

语法
 
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
protected override bool ProcessCmdKey(
    ref Message msg,
    Keys keyData
)

 

参数
msg
类型: System.Windows.Forms ..::. Message % 通过引用传递的 Message,它表示要处理的 Win32 消息。
keyData
类型: System.Windows.Forms ..::. Keys Keys 值之一,它表示要处理的键。
返回值
类型: System ..::. Boolean 如果控件处理并使用击键,则为 true;否则为 false,以允许进一步处理。 
 
      以下是我做的一个例子,代码实现的是在按下Ctrl+Enter的时候弹出一个对话框,对话框内容是“1234567890”,标题是“提示信息”:
         protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
         {
             if ((keyData == (Keys.Control | Keys.Enter)))
             {
                 //按钮的事件写在这
                 MessageBox.Show("1234567890", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 return true;
             }
             else
                 return base.ProcessCmdKey(ref msg, keyData);
         }

转载于:https://www.cnblogs.com/bison1989/archive/2011/12/06/2277705.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值