两种方法
1. 在Form 的KeyDown 或KeyUp 事件
写代码
if (e.KeyCode == Keys.Enter && e.Control )
{
this.SocketSendButton_Click(Type.Missing, EventArgs.Empty);
}
注意要用e.KeyCode 而不是e.KeyData
网上很多说第一种方法无用的就是把KeyCode 用成了KeyData
然后 form 的keypreview 设true;
2.
protected override bool ProcessCmdKey(ref Message msg,Keys keyData)
{
if (keyData ==( Keys.Enter | Keys.Control))
{
this.SocketSendButton_Click(Type.Missing, EventArgs.Empty);
}
return base.ProcessCmdKey(ref msg, keyData);
}
重载表单的processcmdkey事件
return 语句是必要的
键由键值标识,键值是由键代码和一组修饰符共同组成的一个整数值。
键值的左边四个数字包含键代码(与 Windows 虚拟键代码一样)。
键值的右边四个数字包含 SHIFT、CONTROL 和 ALT 键的修饰符位。
同时按下n个键返回的值是这n个键的键值按位或后的值
值 键位
20000 ctrl
00041 A
20041 ctrl + A
因为按下组合键后,键盘反馈的键位信息就是按位或的数值
按下的修改键和shift 按位与 可确定是否按下了shift
((Control.ModifierKeys And Keys.Shift)