Vb.net C1FlexGrid-更改“;突出显示“;一系列细胞的行为

Vb.net C1FlexGrid-更改“;突出显示“;一系列细胞的行为,vb.net,c1flexgrid,Vb.net,C1flexgrid,我的场景: 我有一个带有列和行标题的C1FlexGrid。此外,C1FlexGrid的第一行是布尔行(复选框)。根据这些复选框的状态,所需的效果是禁用该列的单元格。困难在于,由于第一行是不能禁用的布尔数据类型,因此不能使用.Cols(index).AllowEditing属性。我已经成功地使用BeforeEdit事件处理程序实现了一个变通方法,禁止对列中的单元格进行更改,并使用CellStyle在禁用时灰显单元格 Private Sub C1FlexGrid1\u BeforeEdit(ByVa

我的场景:

我有一个带有列和行标题的C1FlexGrid。此外,C1FlexGrid的第一行是布尔行(复选框)。根据这些复选框的状态,所需的效果是禁用该列的单元格。困难在于,由于第一行是不能禁用的布尔数据类型,因此不能使用.Cols(index).AllowEditing属性。我已经成功地使用BeforeEdit事件处理程序实现了一个变通方法,禁止对列中的单元格进行更改,并使用CellStyle在禁用时灰显单元格

Private Sub C1FlexGrid1\u BeforeEdit(ByVal sender作为对象,ByVal e作为C1.Win.C1FlexGrid.RowColEventArgs)处理C1FlexGrid1.BeforeEdit
如果e.Row>1且Me.C1FlexGrid1.Item(1,e.Col)=False,则e.Cancel=True
端接头
私有子C1FlexGrid1_AfterEdit(ByVal sender作为对象,ByVal e作为C1.Win.C1FlexGrid.RowColEventArgs)处理C1FlexGrid1.AfterEdit
如果e.Row=1,Me.C1FlexGrid1.Item(1,e.Col)=False,则
调用FormatColAsDisabled(e.Col)
ElseIf e.Row=1和Me.C1FlexGrid1.Item(1,e.Col)=则为真
调用FormatColAsEnabled(e.Col)
如果结束
端接头
私有子格式ColaSdisabled(ByVal列为整数)
暗淡颜色为C1.Win.C1FlexGrid.CellStyle
color=Me.C1FlexGrid1.style.Add(“灰色”)
color.BackColor=Drawing.color.Gray
对于Me.C1FlexGrid1.Rows.Count-1,行作为整数=2
Me.C1FlexGrid1.SetCellStyle(行、列、颜色)
下一个
端接头
私有子格式ColaEnabled(ByVal列为整数)
对于Me.C1FlexGrid1.Rows.Count-1,行作为整数=2
Me.C1FlexGrid1.SetCellStyle(行、列、Me.C1FlexGrid1.Styles(“正常”))
下一个
端接头
我的问题


是否有办法仅修改这些单元格的“高亮显示”行为,使禁用的单元格完全不高亮显示?

为了避免高亮显示禁用的单元格,如果新选定的单元格为禁用单元格,可以将BeforeSelChange event的Cancel EventArgs设置为true

Private Sub C1FlexGrid1_BeforeSelChange(sender As Object, e As RangeEventArgs) Handles C1FlexGrid1.BeforeSelChange
    If e.NewRange.r1 > 1 And Me.C1FlexGrid1.GetCellCheck(1, e.NewRange.c1) = CheckEnum.Unchecked Then
        e.Cancel = True
    End If
End Sub