我有Inherits myTextBox
这个Implements IDataGridViewEditingControl
。
我知道如果编辑控件处理一个键事件,它应该在Function EditingControlWantsInputKey
内,因此我添加了下面的代码。
Public Function EditingControlWantsInputKey(ByVal key As Keys, ByVal dataGridViewWantsInputKey As Boolean) As Boolean Implements IDataGridViewEditingControl.EditingControlWantsInputKey
If key = Keys.ShiftKey Then
Return True
End If
End Function
与Keys.ShiftKey
相关联的键码是16,但我使用MsgBox(键)找出键码&它打印出65552.我正在尝试检测shift键,以允许用户使用SHIFT + ARROW_RIGHT / LEFT高亮显示文本框内的文本。当我按下SHIFT + RIGHT / LEFT时,光标移动到下一个单元格,因为未检测到SHIFT键。
答案 0 :(得分:2)
keydata / key param是按下的修改键的任何或所有的按位值(Ctrl + A,Shift + Left,Shift + Control + Right等)。值65552
表示Keys.Shift
为真(即按下Shift键)并修改输入。
对于Shift + Left,值为65573(65536 Or 37
):
If (keydata And Keys.Shift) = Keys.Shift AndAlso
(keydata And keys.Left) = Keys.Left Then ' ToDo: add Keys.Right
Return True
End If
Return False ' MSDN: Return Not dataGridViewWantsInputKey
Keys.ShiftKey
是键(16),而Keys.Shift
(65536)是Shift或Control或Alt的修饰符。