ListView.KeyDown <Ctrl>
事件显示以下内容:
e KeyData = LButton | ShiftKey | Control
base {KeyData = LButton | ShiftKey | Control}
Alt false bool
Control true bool
Handled false bool
KeyCode LButton | ShiftKey
KeyData LButton | ShiftKey | Control
KeyValue 17
Modifiers
Shift false bool
SuppressKeyPress false bool
我不喜欢<ShiftKey>
出现但控制键出现的事实。
在ListView.KeyUp <Ctrl>
事件上显示以下内容:
- e {KeyData = LButton | ShiftKey}
+ base {KeyData = LButton | ShiftKey}
Alt false bool
Control false bool
Handled false bool
KeyCode LButton | ShiftKey
KeyData LButton | ShiftKey
KeyValue 17
Modifiers None
Shift false bool
SuppressKeyPress false
是什么让它变得奇怪。查看网络以查看是否存在此错误的任何示例,但无法找到任何内容。我尝试在主机表单上将KeyPreview设置为true无效。
欢迎任何输入。
答案 0 :(得分:4)
此处没有错误,您只需按下并释放Ctrl键即可。调试器不是很好地将Keys枚举转换为字符串。它被具有[Flags]属性的枚举所混淆,因此它尝试将值中的各个位映射到Key。
所以KeyDown =(Keys.Control | Keys.ControlKey)= 0x20011。哪个调试器乱码为
0x20000 =控制
0x00010 = ShiftKey
0x00001 = LButton。
Keyup =(Keys.ControlKey)= 0x00011。哪个调试器乱转到
0x00010 = ShiftKey
0x00001 = LButton。
或者换句话说,忽略调试器告诉你的内容。