les*_*rid 9 .net keyboard key winforms
在System.Windows.Forms中Keys.Control和Keys.ControlKey/Keys.Shift和Keys.ShiftKey之间的确切区别是什么?
我用谷歌搜索了它,但没有具体的内容,似乎也没有在MSDN上记录.
就个人而言,我总是使用Keys.Control/Keys.Shift,因为它工作正常.
编辑:在阅读KreepN的答案后,我想如果你永远不必使用Control/Shift,为什么他们在框架中?
我的意思是,它们甚至不是物理键,所以我看不出微软决定创建它们的原因.
是否存在使用Control/Shift更好的情况?
ControlKey和ShiftKey(和菜单 - 您可以假设它们已被命名为AltKey)代表物理键本身.换句话说,它们是"实际"键,可以在KeyEventArgs对象的KeyCode属性中找到.
另一方面,Control,Shift和Alt将永远不会出现在KeyCode属性中,但它们的值可以在KeyData属性中找到.看起来你从来没有真正需要使用这些常量,因为框架已经通过KeyEventArgs对象的Alt,Control和Shift属性为你拉出它们,但你可以使用它们来测试KeyData属性,如果你真的想要.
编辑以进行编辑:
查看按下"a"键时返回的值:
a(未移位)/ 41/41
A(Shift + a)/ 41/10041
Ctrl + a/41/20041
对于所有修饰符,在这种情况下"KeyCode"= 41.你可以在代码中使用它,如果你关心的是按下主按钮,在这种情况下是"a".
如果您希望根据是否按下修饰符而具有不同的功能,则需要更具体并引用"KeyData"字段并查找表示某个修饰符的#.在这种情况下,"100"用于换档,"200"用于控制在场的开始.
这并不是说你不能只检查KeyData字段末尾的"41",但我从来不会抱怨方便.
可以肯定地说,在你的第一个问题中,你在他们之间寻找的"差异"是他们引用了不同的属性字段.
编辑以获得其他相关性:与键值组合的键修饰符值与快捷键枚举成员直接相关.例如:Shortcut.CtrlF8(0x20077)与Keys.Control |相同 Keys.F8(0x20000 | 0x77)
在处理菜单项的已定义快捷方式属性时,这非常有用.
| 归档时间: |
|
| 查看次数: |
4692 次 |
| 最近记录: |