KeyEventArgs类的主属性(KeyUp和KeyDown事件的一个参数)
(1).Alt属性:用来获取一个值,该值提示是否曾按下了Alt键
(2).Control属性:用来获取一个值,该值提示是否曾按下了Crtl键
(3).Shift属性:用来获取一个值,该值提示是否曾按下了Shift键
(4).Handle属性:用来获取一个值,该值提示是否曾处理过此事件
(5).KeyCode属性:以Keys枚举值返回键盘键的键码,该属性不包含修改键信息,用于测试指定的键盘键
(6).KeyData属性:以Keys枚举值返回键盘键的键码,该属性包含修改键信息,用于判断按下键的所有信息(可返回组合键)
(7).KeyValue属性:以整数形式返回键码,而不是Keys枚举类型值。用于获得所按下键的数字表示
(8).Modifiers属性:以Keys枚举值返回所按下的修改键,仅判断修改键的信息
1、(Control.ModifierKeys & Keys.Alt) == Keys.Alt && (Control.ModifierKeys & Keys.Control) == Keys.Control
2、Control.ModifierKeys == Keys.Alt && Control.ModifierKeys == Keys.Control
3、(Control.ModifierKeys & Keys.Alt) !=0 && (Control.ModifierKeys & Keys.Control) != 0
试了一下,3种方法中只有2显然是不对,1、3能正确识别。请检查程序其它地方有没有问题?
在事件处理事件中加入以下几行测试一下:
void Panel1_MouseMove(object sender, MouseEventArgs e)
{
MessageBox.Show(Control.ModifierKeys+"");
if ((Control.ModifierKeys & Keys.Alt) == Keys.Alt && (Control.ModifierKeys & Keys.Control) == Keys.Control) MessageBox.Show("正确1");
if (Control.ModifierKeys == Keys.Alt && Control.ModifierKeys == Keys.Control) MessageBox.Show("正确12");
if ((Control.ModifierKeys & Keys.Alt) !=0 && (Control.ModifierKeys & Keys.Control) != 0) MessageBox.Show("正确3");
}
监控e参数。
看你在按过个键时,
e参数中的键位码。