在一个表单上,我有 4 个 MSFlexGrids。
顶部网格包含不时更新的动态数据。用户可以在其他 3 个网格的单元格中输入数据。
用于填充顶部网格的数据通过 Winsock 控件接收、处理,然后使用以下命令将结果写入适当的单元格.TextMatrix(intRow, intCol) = strData
这工作正常。数据更新完美,用户可以毫无问题地将他的数据输入到其他 3 个网格中。
当我想更改顶部网格中某些单元格的背景颜色时,就会出现问题。在极少数情况下接收到的数据非常重要,相应单元格的背景颜色应该改变颜色。
我使用以下代码更改单元格的颜色:
With grd
For lngRow = 1 To .Rows - 1
'default background color
lngBack = vbWhite
'check for important values
If Val(.TextMatrix(lngRow, 1)) >= lngMax Then
'important color
lngBack = &H3040FF
End If
'select whole row
.Row = lngRow
.Col = 0
.RowSel = lngRow
.ColSel = .Cols - 1
'set the background color of the selected row
.CellBackColor = lngBack
Next lngRow
End With 'grd
这样做的问题是,当用户在其他 3 个网格中输入数据时,顶部网格中一行的背景颜色发生了变化,然后焦点移动到顶部网格,用户必须重新输入他的数据在他工作的网格中。
是否可以在不将焦点移动到该网格的情况下更改 MSFlexGrid 中单元格或整行的背景颜色?