用了一个大虾讲的方法使用户选中的那一行反显,代码如下:
Private Sub flexgrid_EnterCell()
'*将当前行改变颜色
Dim i As Integer
Dim iCol As Integer
iCol = Flexgrid.Col
For i = Flexgrid.FixedCols + 1 To Flexgrid.Cols
Flexgrid.Col = i - 1
Flexgrid.CellBackColor = &HFFFFC0
Next i
Flexgrid.Col = iCol
End SubPrivate Sub flexgrid_LeaveCell()
'*将当前行改变颜色
Dim i As Integer
Dim iCol As Integer
If Flexgrid.Row = 0 Then
Exit Sub
End If
iCol = Flexgrid.Col
For i = Flexgrid.FixedCols + 1 To Flexgrid.Cols
Flexgrid.Col = i - 1
Flexgrid.CellBackColor = vbWhite
Next i
Flexgrid.Col = iCol
End Sub用了这一方法确实实现了这一功能,选中某行之后,该行反显为绿色。但是每次选中MSHFlexGrid最上面灰色的一行(第一行上面的一行,底色为灰色)时,除了反显为绿色的一行外,其他行有一列就变为蓝色,这是为什么啊?
此外,我的MSHFlexGrid的第一行显示的是标题,我希望用户选中标题行的话标题行并不反显,反显的依然是先前选中的那一行,应该怎么做啊?请大虾指点
///
我沒有測試這段代碼,但是你可以用固定行與列,這樣就不會反了或者用mouserow進行抓補
Private Sub MSHFlexGrid1_Click()
Dim i As Integer
dim x as integerX = MSHFlexGrid1.RowSelIf X = 1 Then
MSHFlexGrid1.Row = 1 '改回白色
For i = 0 To 4
MSHFlexGrid1.Col = i
MSHFlexGrid1.CellBackColor = vbWhite
Next i
MSHFlexGrid1.Row = selrow 'selrow用来记录上次用户选中的行数
For i = 0 To 4
MSHFlexGrid1.Col = i
MSHFlexGrid1.CellBackColor = &HFFFFC0
Next i
Exit Sub
End If
selrow = X
end sub这样一来,选中标题那一行的时候已经可以保持先前那一行选中反显了,但是每次一点标题行(第一行),标题行上面那一行灰色的就会反显,怎么回事啊?那一行是第0行?
救命啊大虾