我想实现在键盘上按“↓”或“↑”按钮触发MSFlexGrid控件的什么事件可以实现让改行改变背景颜色?
我想了下面的方法:
Private Sub MSFlexGrid1_Click()
MSFlexGrid1.Col = 0
MSFlexGrid1.ColSel = MSFlexGrid1.Cols - 1
End Sub
鼠标单击哪一行,该行就改变颜色了。已经达到目的。但还是觉的没有按向下或向上箭头来得方便。
但把上面的代码放在:Private Sub MSFlexGrid1_KeyDown事件里就不起作用:
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
MSFlexGrid1_Click
end if
按上下键没有不能使其背景颜色改变。
应为MSFlexGrid控件中的数据是通过text1的change事件中调用的存储过程填充的,所有用MSFlexGrid的EnterCell()或LeaveCell()等事件,一改变text1.text中的数据整个程序就不响应了,
MSFlexGrid中的数据一直闪。
大家帮帮忙,谢谢!

解决方案 »

  1.   

    使用EnterCell和LeaveCell来改变背景色,如果使用不当会导致程序陷入死循环。
      

  2.   


    Private Sub MSFlexGrid1_RowColChange()MSFlexGrid1_Click
    End Sub
      

  3.   

    原因是MSFlexGrid1_KeyDown不响应光标键的动作。
      

  4.   

    既然文本框获得了焦点,理所当然要在文本框的keydown事件中设置msflexgrid的背景颜色咯
      

  5.   

    用textbox控件实现msflexgrid的可编辑是个常规做法
    可以做到很完美的,前提是不怕麻烦,细心琢磨
    各种事件交叉处理很繁杂
      

  6.   

    这样搞MSFlexGrid里面只剩下最后一列数据了
      

  7.   

    +1看你脑子够不够使了, 反正就两个控件, 这个得到焦点的时候那个如何处理, 那个得到焦点的时候这个如何处理.
    考虑得周全一点就能搞定了.
    给你个例程看看:http://download.csdn.net/detail/WallesCai/369462
      

  8.   

    我宁愿花时间自己写一个表格控件,就用TextBox做每一个单元格。