问问题
5938 次
1 回答
2
在我的事件处理程序中按Ctrl、Alt或Shift单独导致
Control
、Alt
和Shift
返回。单独按下这些键中的每一个都会导致在我的事件处理程序中返回。你确定你不处理这个事件吗?true
KeyDown
false
KeyUp
KeyUp
正如@sean woodward 所说,应该映射到
Keys.LWin
或者Keys.RWin
该
KeyPress
事件仅在按下其中一个字符键时引发,并将返回由按下的键或按下的键组合产生的字符。Ctrl+Shift+B
不是一个字符,因此您不能KeyChar
单独使用来获取该信息。尝试使用KeyDown
orKeyUp
事件并查看Modifiers
属性以获取以逗号分隔的字符串,其中包含正在按下的修饰键。如果顺序很重要,您需要像Modifiers
往常一样以相同的顺序返回键,即Shift, Control, Alt
即使它们不是按的方式。
这是我使用的代码,您可以尝试使用它:
KeyDown += (o, ea) =>
{
System.Diagnostics.Debug.WriteLine("KeyDown => CODE: " + ea.KeyCode +
", DATA: " + ea.KeyData +
", VALUE: " + ea.KeyValue +
", MODIFIERS: " + ea.Modifiers +
", CONTROL: " + ea.Control +
", ALT: " + ea.Alt +
", SHIFT: " + ea.Shift);
};
KeyUp += (o, ea) =>
{
System.Diagnostics.Debug.WriteLine("KeyUp => CODE: " + ea.KeyCode +
", DATA: " + ea.KeyData +
", VALUE: " + ea.KeyValue +
", MODIFIERS: " + ea.Modifiers +
", CONTROL: " + ea.Control +
", ALT: " + ea.Alt +
", SHIFT: " + ea.Shift);
};
KeyPress += (o, ea) =>
{
System.Diagnostics.Debug.WriteLine("KeyPress => CHAR: " + ea.KeyChar);
};
于 2013-02-17T06:07:49.617 回答