MSHFlexgrid点击某一行后那行的底色和字的颜色都会发生相应的变化,但此时可以选中多行。为了不能选中多行,我在程序中添加了mousedown,mouseup事件来控制。现在不能选中多行,可是选种某一行时也不会改变颜色了。因此很难辨别到底哪行被选中了。请问大家,我现在该怎么改呢?

解决方案 »

  1.   

    在下曾经这样处理:http://blog.csdn.net/northwolves/archive/2004/09/02/92956.aspx
      

  2.   

    Option ExplicitDim lngOldRow As LongPrivate Sub Form_Load()
        Dim i As Long
        
        MSFlexGrid1.Rows = 10: MSFlexGrid1.Cols = 5
        
        For i = 1 To MSFlexGrid1.Rows - 1
            MSFlexGrid1.TextMatrix(i, 1) = "aaaa" & i
        Next    MSFlexGrid1.SelectionMode = flexSelectionByRow
    End SubPrivate Sub MSFlexGrid1_SelChange()
        MSFlexGrid1.Redraw = False
        Dim i As Long, lngNewRow As Long
        
        lngNewRow = MSFlexGrid1.Row
        MSFlexGrid1.Row = lngOldRow
        For i = 1 To MSFlexGrid1.Cols - 1
            MSFlexGrid1.Col = i
            MSFlexGrid1.CellBackColor = vbWhite
        Next
        
        MSFlexGrid1.Row = lngNewRow
        For i = 1 To MSFlexGrid1.Cols - 1
            MSFlexGrid1.Col = i
            MSFlexGrid1.CellBackColor = vbRed
        Next
        MSFlexGrid1.Redraw = True
        
        lngOldRow = lngNewRow
    End Sub
      

  3.   

    当活动单元更改时,下列事件顺序发生:首先是 LeaveCell、接着是 EnterCell、最后是 RowColChange。
    你可以确定了行号,然后挨个格改变,
      

  4.   

    Option Explicit
    Private Sub Form_Load()
    Dim i As Integer, j As Integer
    With MSHFlexGrid1
    .Rows = 10
    .Cols = 4
    For i = 1 To 9
    .TextMatrix(i, 0) = "第 " & i & " 行"
    For j = 1 To 3
    .TextMatrix(0, j) = "第 " & j & " 列"
    .TextMatrix(i, j) = i & "," & j
    Next
    Next
    .SelectionMode = flexSelectionByRow
    .BackColorSel = vbGreen
    .ForeColorSel = vbRed
    End With
    End Sub
    Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        With MSHFlexGrid1
         .Row = .MouseRow
              .Col = 0
            .ColSel = .Cols - 1
        End With
    End Sub