e.keyChar不适用于Ctrl

时间:2011-01-06 22:03:24

标签: c# winforms keyboard hashcode gethashcode

此代码显示按下按钮的哈希码,但是当我按下控制按钮时,我什么也没做。可以帮助我吗?

 private void treeView1_KeyPress(object sender, KeyPressEventArgs e)
    {
       MessageBox.Show(e.KeyChar.GetHashCode().ToString());
    }

C#WinForms

1 个答案:

答案 0 :(得分:4)

Ctrl是一个修饰键,因此它本身不会生成按键事件。

将按键视为已键入的实际角色(例如“A”)。相比之下,修改键(Ctrl,Alt和Shift)通常不会“键入”任何东西,它们倾向于与其他键一起使用来修改它们的效果(例如,shift会将“a”改为“A”; ctrl经常将“a”更改为“Select All”的热键,Alt可能会尝试打开以“A”字母开头的主菜单(如果有的话)

要使用ctrl,您通常要么在按下普通键的位置检查其状态(例如,当按下“A”时,确定按键是指“A”还是“ctrl + A”),或者你可以异步检查键状态(例如,在拖动时,检查是否按住ctrl以对拖动应用修改,例如将其限制为仅在一个轴上拖动,或者复制被拖动的文件而不是移动它们)