用了一个大虾讲的方法使用户选中的那一行反显,代码如下:
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的第一行显示的是标题,我希望用户选中标题行的话标题行并不反显,反显的依然是先前选中的那一行,应该怎么做啊?请大虾指点

解决方案 »

  1.   

    此外,我的MSHFlexGrid的第一行显示的是标题,我希望用户选中标题行的话标题行并不反显,反显的依然是先前选中的那一行,应该怎么做啊?
    ///
    我沒有測試這段代碼,但是你可以用固定行與列,這樣就不會反了或者用mouserow進行抓補
      

  2.   

    大虾,我去掉反显后,每次选中MSHFlexGrid最上面灰色的一行(就是用来显示标题的那一行)就会反显,这怎么解决?
      

  3.   

    给您看一下代码:
    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行?
    救命啊大虾
      

  4.   

    点击灰色的那一行时,MSHFlexGrid1.RowSel是等于0吗?