WinForm中快捷键与组合按键的设置方法

每个窗体都有这样3个事件:KeyDown、KeyPress、KeyUp,KeyDown和KeyPress都是按键按下事件,但KeyDown用的是KeyCode跟键盘各个按键相对应,它对应Keys枚举,用起来比较方便;而KeyPress用的是KeyChar,这个就要找ASC II编码了,不方便。因此我们使用KeyDown事件来设置窗体的快捷键,其实对应的重写OnKeyDown方法也可以响应按键消息。

新建一个空白窗体 

双击该事件后的空白生成代码,首先我们设置单个按键,让它按下F11最大化,再次按下还原,在事件中加入如下代码: 

if (e.KeyCode == Keys.F11) 


if (WindowState == FormWindowState.Maximized) 
WindowState = FormWindowState.Normal; 
else 
WindowState = FormWindowState.Maximized; 

若窗体的WindowState为Maximized则还原,否则最大化) 

下面在窗体中加入一个名为txtInput的TextBox,两个名为btnConfirm、btnExit的Button: 



再次运行窗体,按下F11,不起作用了?这是怎么回事?

因为这时窗体运行后,焦点已不在窗体上,而在控件上了,我们要将KeyPreview设置为True,向窗体注册控件上产生的键盘事件,再次运行,问题解决了。

那么组合按键又怎么设置呢?例如要按下Alt和数字0,需要这样:

if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.D0) 

    MessageBox.Show("按下了Alt + 0"); 
}

 

使用Modifiers可设置组合键,键盘数字区按键的Keys枚举以D打头,而小键盘上的数字以NumPad打头。按下Ctrl与Shift组合键的方法与其类似,下面我们看看按下Ctrl + Alt + 数字0该怎样设置:

 

if ((int)e.Modifiers == ((int)Keys.Control + (int)Keys.Alt) && e.KeyCode == Keys.D0) 
//if(e.Modifiers == (Keys.Control | Keys.Alt) && e.KeyCode == Keys.D0)  //建议用下面的判断

    MessageBox.Show("按下了Control + Alt + 0"); 

将Ctrl和Alt的枚举转换为int型相加后与Modifiers对比,这样即可判断是否按下了该组合键。

那么 怎么触发按钮事件呢?

如按F1触发confirm按钮事件

private void Form1_KeyDown(object sender, KeyEventArgs e)

{
               if (e.KeyCode == Keys.F1)
             {

 

                         / /如果还有keypress事件,不让此快捷键触发其事件可加一句代码

                      e.Handled = true;   //将Handled设置为true,指示已经处理过KeyPress事件
                      confirm1.PerformClick();执行单击confirm1的动作
             }
}

另外的,与窗体的AcceptButton属性相关联的按钮,将与键盘上的Enter键对应;与窗体的CancelButton属性相关联的按钮,将与键盘上的Ecs键对应。

posted on 2017-06-28 14:17 marblemm 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/marblemm/p/7089494.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值