【发布时间】:2010-06-10 06:56:36
【问题描述】:
我必须在 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");
}
更新:按一次 SHIFT + 8 即可打印以下内容:
ShiftKey
ShiftKey, Shift
Up
Up
ShiftKey
ShiftKey, Shift
谁能解释一下,为什么 SHIFT + 8 没有被触发,但 CTRL + 8 有效?
附:我写了 + UP,因为用户想用数字键盘箭头和 SHIFT 键导航,但他的 NumLock 也会打开。这就是我捕获 Keys.NumPad8 的原因。
一切顺利, 佩塔尔
【问题讨论】:
-
您是否尝试在该方法上设置断点并查看 a) 它被调用和 b) 当您按下该组合键时实际传递了什么?
-
打开记事本,写一些字符串,转到最后一个字符串,然后按 Shift+NumPad8。这种组合是向上箭头。
-
@Paolo,是的,我已经尝试过了,我已经更新了我的问题。