Public Sub MSFlexGrid4_KeyDown(KeyCode As Integer, Shift As Integer)
' Save the position of the grids Row and Col for later:MsgBox KeyCode
' key " LEFT "
If KeyCode = 97 And MSFlexGrid4.Col > 1 Then
MSFlexGrid4.Col = MSFlexGrid4.Col - 1
End If
' key " RIGHT "
If KeyCode = 99 And MSFlexGrid4.Col < MSFlexGrid4.Cols - 1 Then
MSFlexGrid4.Col = MSFlexGrid4.Col + 1
End If
' key " UP "
If KeyCode = 101 And MSFlexGrid4.Row > 1 Then
MSFlexGrid4.Row = MSFlexGrid4.Row - 1
End If
' key " DOWN "
If KeyCode = 98 And MSFlexGrid4.Row < MSFlexGrid4.Rows - 1 Then
MSFlexGrid4.Row = MSFlexGrid4.Row + 1
End If
end sub 为什么捕捉不到“上下左右”键呢?其余的键都可以的郁闷,请大侠指点!!!!

解决方案 »

  1.   

    上面的 97 , 99 , 101 , 98 是我自己测试用的,原来用的是 vbkeyleft,vbkeyright,vbkeydown,vbkeyup,我按下上下左右键的时候,根本什么都捕捉不到
      

  2.   

    写这些代码干什么?
    msflexgrid自带这个功能啊
    如果想捕捉方向键,可以用subclass
    顺便还可以给它添加滚轮的功能。
      

  3.   

    我试过了,虽然在msflexgrid上可以看到“虚框”的移动,但是col值和row值不变,也就是说比如你点了row= 1 col =3 ,然后再点左方向键,col还是等于3,而不是等于2
      

  4.   

    怎么会不变呢?
    你加上这句试试,按方向键的时候行列是跟着变化的
    Private Sub MSFlexGrid1_RowColChange()
        Debug.Print MSFlexGrid1.Row; MSFlexGrid1.Col
    End Sub
      

  5.   

    好像MS的这个控件没有这个功能,表格中无法捕捉到方向键的值可以得用API函数来实现
      

  6.   

    方向键的值应该是。
    KeyCode = 37  '左
    KeyCode = 38  '上
    KeyCode = 39  '右
    KeyCode = 40  '下呵呵,,不知道在“MSFlexGrid4_KeyDown”事件中有没有用。。
    你可在事件中写“Debug.Print KeyCode”试试。。
      

  7.   

    试过了捕捉不到 ,但是mshflexgrid可以捕捉到,楼住可以试试