MSFlexGrid1中选定行改变背景颜色,该如何解决
MSFlexGrid1中选定行改变背景颜色
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
Dim i_Col As Integer
For i_Col = 0 To MSFlexGrid1.Cols - 1
'MSFlexGrid1.RowSel
MSFlexGrid1.Col = i_Col
MSFlexGrid1.BackColor = &H8000000D
Next i_Col
End If
End Sub
上面是我写的代码,按向下箭头或向上箭头是改变选中行的背景颜色,并使前一行的颜色恢复正常。并且按其他键MSFlexGrid1里的光标不移动。搞了一晚上,还是没搞定,只有上来请教老师们了。
我在Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)里也写了一些代码,希望只有按回车键是这个事件才发生,按其他键是只有“滴”的一声响,该怎么搞?
谢谢
------解决方案--------------------
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
Dim i_Col As Integer
For i_Col = 0 To MSFlexGrid1.Cols - 1
'MSFlexGrid1.RowSel
MSFlexGrid1.Col = i_Col
MSFlexGrid1.BackColor = &H8000000D
Next i_Col
End If
End Sub
上面是我写的代码,按向下箭头或向上箭头是改变选中行的背景颜色,并使前一行的颜色恢复正常。并且按其他键MSFlexGrid1里的光标不移动。搞了一晚上,还是没搞定,只有上来请教老师们了。
我在Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)里也写了一些代码,希望只有按回车键是这个事件才发生,按其他键是只有“滴”的一声响,该怎么搞?
谢谢
------解决方案--------------------
- VB code
'试试下面的代码: Private Sub hflexgrid_EnterCell() '单击某一单元时,改变该行颜色 Dim c_col As Integer c_col = HFlexgrid.Col If c_col > 0 Then For i_Col = 0 To HFlexgrid.Cols - 2 HFlexgrid.Col = i_Col HFlexgrid.CellBackColor = &H80C0FF Next i_Col HFlexgrid.Col = c_col End If End Sub Private Sub hflexgrid_LeaveCell() '当某一行失去焦点时,改变该行颜色 Dim c_col As Integer c_col = HFlexgrid.Col For i_Col = 0 To HFlexgrid.Cols - 2 HFlexgrid.Col = i_Col HFlexgrid.CellBackColor = vbWhite Next i_Col HFlexgrid.Col = c_col End Sub
------解决方案--------------------
你只要在这个过程中用select语句来区分按下的是什么键,然后分别处理即可
- VB code
Sub MSFlexGrid1_KeyDown... Select case keycode case vbkeyup: ..... case vbkeyreturn..... end select
------解决方案--------------------
上面那个vbkeyreturn是我杜撰的,你自己查查回车是哪个常数即可