测试没有问题。试试这样
If e.newrange.Toprow < 0 Then Return
If vars("stop") = True Then
_ps.clear
Return
End If
If Vars("dqysxtablename") <> e.Table.Name Then
Vars("dqysxtablename") = e.Table.Name
_ps = new List(Of String)
gc.Collect
End If
If ModifierKey <> Keys.Control Then
For Each p As String In _ps
Dim ary() As String = p.Split(",")
If ary(0) >= 0 AndAlso ary(1) >= 0 Then
e.Table.Grid.SetCellStyle(ary(0)+e.Table.HeaderRows, ary(1)+1, "")
End If
Next
_ps = new List(Of String)
gc.Collect
End If
For i As Integer = e.NewRange.TopRow To e.NewRange.BottomRow
For j As Integer = e.NewRange.LeftCol To e.NewRange.RightCol
Dim p As String = i & "," & j
If i >= 0 AndAlso j >= 0 AndAlso _ps.contains(p) = False Then
_ps.add(p)
End If
Next
Next
Dim sum As Double = 0
Dim hs As Integer = 0
For Each p As String In _ps
Dim ary() As String = p.Split(",")
If ary(0) >= 0 AndAlso ary(1) >= 0 AndAlso e.Table.Rows(ary(0), True).IsGroup = False Then
Dim s As C1.Win.C1FlexGrid.CellStyle = e.Table.grid.Styles.Add("selected")
's.backcolor = Color.LightSteelBlue '背景
s.backcolor = Color.LightBLue
e.Table.Grid.SetCellStyle(ary(0)+e.Table.HeaderRows, ary(1)+1, s)
'e.Table.DataTable.SysStyles("Focus").BackColor = Color.red
'各种计算
Dim cval = e.Table(cint(ary(0)), cint(ary(1)))
sum += val(cval)
hs = hs + 1
End If
Next
If hs > 0 Then
StatusBar.Message1 = "第" & (e.Table.Position + 1) & "行,目前展现" & e.Table.Rows.Count & "行,本表共" & e.Table.DataTable.DataRows.Count & "行." & _
"| |计数:" & hs & " |累计:" & sum & " |平均:" & sum/hs
Else
StatusBar.Message1 = "第" & (e.Table.Position + 1) & "行,目前展现" & e.Table.Rows.Count & "行,本表共" & e.Table.DataTable.DataRows.Count & "行."
End If