我必须在一个TextBox - SHIFT +8(在numpad上)中捕获以下键盘事件。这也意味着NumLock将被打开。当我尝试下列SHIFT + UP时没有打印:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Shift && e.KeyCode == Keys.NumPad8)
Console.WriteLine("SHIFT + UP");
Console.WriteLine(e.KeyCode);
Console.WriteLine(e.KeyData);
Console.WriteLine();
}但是CTRL +8(在numpad上)正在工作。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.NumPad8)
Console.WriteLine("CTRL + UP");
}Update:在一次移位+8按下打印以下内容:
ShiftKey
ShiftKey, Shift
Up
Up
ShiftKey
ShiftKey, Shift有人能解释一下,为什么SHIFT +8没有被解雇,但CTRL +8正在工作?
我编写了+ UP,因为用户希望用数字箭头和SHIFT键导航,但是他的NumLock也会打开。所以我才抓到Keys.NumPad8.
一切都好,佩塔
发布于 2010-06-10 07:12:16
它不能工作,因为shift+numpad8 = UP和当您将这些键按在一起时:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
string shift = e.Shift.ToString(); //false
string code = e.KeyCode.ToString(); //up
}如果您同时按shift和up键,而不是shift - true code - up。
因此,如果要捕获shift & numpad8,只需检查键即可。
https://stackoverflow.com/questions/3012270
复制相似问题