Vb6 更改单元格背景颜色而不更改焦点

Vb6 更改单元格背景颜色而不更改焦点,vb6,cell,msflexgrid,Vb6,Cell,Msflexgrid,在表格上,我有4个MSFlexGrids 顶部网格包含动态数据,这些数据会偶尔更新。 用户可以在其他3个网格的单元格中输入数据 用于填充顶部网格的数据通过Winsock控件接收、处理,然后使用.TextMatrix(intRow,intCol)=strData将结果写入适当的单元格 这个很好用。数据被完美地更新,用户可以毫无问题地将数据输入其他3个网格 当我想更改顶部网格中某些单元格的背景色时,就会出现问题。 在极少数情况下,接收到的数据非常重要,相应单元格的背景颜色应改变颜色 我使用以下代码更

在表格上,我有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的情况下更改单元格或整行的背景颜色?

到目前为止,我无法找到解决问题的方法

不过,我创建了一个工作环境:

我为每个网格创建了一个包含一个值的枚举:

Public Enum ActiveGrid
  enuSystem = 0
  enuTel = 1
  enuRLN = 2
  enuRood = 3
  enuData = 4
  enuCircuit = 5
End Enum
每当网格获得焦点时,我都将相应的枚举值保存在表单级变量中。 在第一个网格中为所需的单元格着色后,我将焦点返回到最后一个拥有它的网格

用户不是在网格本身中编辑,而是在单元格上方的文本框中编辑,因此网格失去焦点没有真正的问题

当你仔细观察时,你会发现焦点很快离开并返回

现在,我将接受这项工作,以及它的小故障

也许将来我能想出一个更好的解决方案,或者其他人有更好的建议