VB.Net在datagridview编辑控件上检测SHIFT键

时间:2014-06-29 09:43:16

标签: vb.net datagridview

我有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键。

1 个答案:

答案 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的修饰符。