我是按如下代码改变每行的颜色的,在LOAD的时候载入感觉不到慢,但是当用其他事件调用改变值时,但是发现很慢,一行一行的显示,大家有没有什么快速改变背景颜色的方法呢。设置MSHFlexGrid每行的颜色
Public Sub SetRowColor(ByRefMSHFlexGridAsObject)
Dim j,i,objName
objName=TypeName(MSHFlexGrid)
If StrConv(Trim(objName),vbUpperCase)<>"MSHFLEXGRID" Then
Exit Sub
End If
MSHFlexGrid.FillStyle=1
For i=1To MSHFlexGrid.Rows-1
MSHFlexGrid.Row=i
If i Mod 2=0 Then
MSHFlexGrid.Col=0
MSHFlexGrid.ColSel=MSHFlexGrid.Cols-1
MSHFlexGrid.CellBackColor=&H80FFFF
End If
Next i
MSHFlexGrid.FillStyle=0
MSHFlexGrid.Row=0
MSHFlexGrid.Col=0
End Sub

解决方案 »

  1.   

    Public Sub SetRowColor(ByRefMSHFlexGridAsObject)
    Dim j,i,objName
    objName=TypeName(MSHFlexGrid)
    If StrConv(Trim(objName),vbUpperCase)<>"MSHFLEXGRID" Then
    Exit Sub
    End If
    MSHFlexGrid.Visible=False'加这句
    MSHFlexGrid.FillStyle=1
    For i=1To MSHFlexGrid.Rows-1
    MSHFlexGrid.Row=i
    If i Mod 2=0 Then
    MSHFlexGrid.Col=0
    MSHFlexGrid.ColSel=MSHFlexGrid.Cols-1
    MSHFlexGrid.CellBackColor=&H80FFFF
    End If
    Next i
    MSHFlexGrid.FillStyle=0
    MSHFlexGrid.Row=0
    MSHFlexGrid.Col=0
    MSHFlexGrid.Visible=True'加这句
    End Sub 
     
     
    试试看
      

  2.   

    MSHFlexGrid1.Redraw = False



    MSHFlexGrid1.Redraw = True
      

  3.   

    实际上没有必要给所有行刷颜色,只需要给显示出来的行刷一下颜色就可以了。在行数有几百上千条的时候还是能明显提高速度的。
    用Toprow和RowIsVisible两个属性就能判断出哪些行是当前显示的,将ScrollTrack设置为true,在scroll事件中刷颜色即可。如果嫌这么做麻烦,可以用一下Redraw这个属性,在刷颜色之前设置为false,刷完之后设置为true,应该能提速。