定义快捷键的方法
//在form_load的时候写上 //表示窗体接受按键事件 //然后在KeyDown事件中写入如下代码实现输入的是否是Ctrl+A的组合键: private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control) MessageBox.Show("Ctrl+R"); } //验证输入的是不是组合键盘Ctrl+A protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.A)) { MessageBox.Show("Ctr+A"); } return base.ProcessCmdKey(ref msg, keyData); } //或者使用一般按键处理也就可以了 protected override bool ProcessDialogKey(Keys keyData) { if (keyData == (Keys.Control | Keys.A)) { MessageBox.Show("Ctr+A"); } return base.ProcessDialogKey(keyData); } //从外部配置文件获取用户自定义组合键:比如XML,以ProcessCmdKey为例 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { //获取快捷键列表 string shortCutKeys = XMLHelper.XmlRead2(XmlPath, "ShortCutKeys"); //假设键与键之间用+号连接 string[] keyStrs = shortCutKeys.Split(‘+‘); Keys combineKey = Keys.None; KeysConverter kc = new KeysConverter(); foreach (string key in keyStrs) combineKey |= (Keys)kc.ConvertFromString(key.Trim()); if (keyData == combineKey) //do something return base.ProcessCmdKey(ref msg, keyData); }
本文出自 “发现问题解决问题” 博客,请务必保留此出处http://lafflan.blog.51cto.com/3441362/1662378
原文地址:http://lafflan.blog.51cto.com/3441362/1662378