如题,我要选择行中其他的列怎么办?

解决方案 »

  1.   

    Private Sub mshflexgrid1_Click()
        mshflexgrid1.col=4
    End Sub
      

  2.   

    将选择模式设置为Me.MSHFlexGrid1.SelectionMode = flexSelectionFree
    然后再自己绘制选择效果
      

  3.   

    俺写了一个自由选择模式下自绘选择效果的代码,楼主可以参考一下:Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_SETREDRAW = &HBDim m_oldRow As Long
    Private Sub Form_Load()
        Dim i As Long, j As Long
        
        m_oldRow = -1
        Me.ScaleMode = vbPixels
        Me.MSHFlexGrid1.FixedRows = 1
        Me.MSHFlexGrid1.FixedCols = 1
        Me.MSHFlexGrid1.Cols = 5
        Me.MSHFlexGrid1.Rows = 10
        Me.MSHFlexGrid1.SelectionMode = flexSelectionFree
        Me.MSHFlexGrid1.HighLight = flexHighlightNever
        For i = 0 To Me.MSHFlexGrid1.Rows - 1
            For j = 0 To Me.MSHFlexGrid1.Cols - 1
                Me.MSHFlexGrid1.TextMatrix(i, j) = "第" & i + 1 & "行" & j + 1 & "列"
            Next
        Next
    End SubPrivate Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        If Button = 1 Then
            Me.MSHFlexGrid1.RowSel = Me.MSHFlexGrid1.Row
            Me.MSHFlexGrid1.ColSel = Me.MSHFlexGrid1.Col
            SendMessage Me.MSHFlexGrid1.hwnd, WM_SETREDRAW, 0, 0&
        End If
    End SubPrivate Sub MSHFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
        If Button = 1 Then
            Me.MSHFlexGrid1.RowSel = Me.MSHFlexGrid1.Row
            Me.MSHFlexGrid1.ColSel = Me.MSHFlexGrid1.Col
            SendMessage Me.MSHFlexGrid1.hwnd, WM_SETREDRAW, 1, 0&
        End If
    End SubPrivate Sub MSHFlexGrid1_RowColChange()
        Dim i As Long, iRow As Long, iCol As Long    iRow = Me.MSHFlexGrid1.Row
        iCol = Me.MSHFlexGrid1.Col
        Me.MSHFlexGrid1.FillStyle = flexFillSingle
        If m_oldRow > -1 And m_oldRow <> iRow Then
            Me.MSHFlexGrid1.Row = m_oldRow
            For i = Me.MSHFlexGrid1.FixedCols To Me.MSHFlexGrid1.Cols - 1
                Me.MSHFlexGrid1.Col = i
                Me.MSHFlexGrid1.CellBackColor = vbWhite
                Me.MSHFlexGrid1.CellForeColor = vbBlack
            Next
            Me.MSHFlexGrid1.Row = iRow
        End If
        For i = Me.MSHFlexGrid1.FixedCols To Me.MSHFlexGrid1.Cols - 1
            Me.MSHFlexGrid1.Col = i
            If i = iCol Then
                Me.MSHFlexGrid1.CellBackColor = vbWhite
                Me.MSHFlexGrid1.CellForeColor = vbBlack
            Else
                Me.MSHFlexGrid1.CellBackColor = &HC56A31
                Me.MSHFlexGrid1.CellForeColor = vbWhite
            End If
        Next
        Me.MSHFlexGrid1.Col = iCol
        m_oldRow = Me.MSHFlexGrid1.Row
    End Sub
      

  4.   

    原来我用代码把选择模式设置为MSHFlexGrid1.SelectionMode = flexSelectionByRow了,改成flexSelectionFree或者直接删除默认的就是flexSelectionFree了。