Мой сценарий:
У меня есть C1FlexGrid с заголовками столбцов и строк. Кроме того, первая строка C1FlexGrid является логической строкой (флажками). В зависимости от состояния этих флажков желаемый эффект — отключение ячеек для этого столбца. Сложность заключается в том, что из-за того, что первая строка является логическим типом данных, который нельзя отключать, использование свойства .Cols(index).AllowEditing невозможно. Я уже успешно реализовал обходной путь, используя обработчик событий BeforeEdit, чтобы запретить изменения в ячейках в столбце, а также CellStyle, чтобы сделать ячейки серыми, когда они отключены.
Private Sub C1FlexGrid1_BeforeEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.BeforeEdit
If e.Row > 1 And Me.C1FlexGrid1.Item(1, e.Col) = False Then e.Cancel = True
End Sub
Private Sub C1FlexGrid1_AfterEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.AfterEdit
If e.Row = 1 And Me.C1FlexGrid1.Item(1, e.Col) = False Then
Call FormatColAsDisabled(e.Col)
ElseIf e.Row = 1 And Me.C1FlexGrid1.Item(1, e.Col) = True Then
Call FormatColAsEnabled(e.Col)
End If
End Sub
Private Sub FormatColAsDisabled(ByVal col As Integer)
Dim color As C1.Win.C1FlexGrid.CellStyle
color = Me.C1FlexGrid1.Styles.Add("Gray")
color.BackColor = Drawing.Color.Gray
For row As Integer = 2 To Me.C1FlexGrid1.Rows.Count - 1
Me.C1FlexGrid1.SetCellStyle(row, col, color)
Next
End Sub
Private Sub FormatColAsEnabled(ByVal col As Integer)
For row As Integer = 2 To Me.C1FlexGrid1.Rows.Count - 1
Me.C1FlexGrid1.SetCellStyle(row, col, Me.C1FlexGrid1.Styles("Normal"))
Next
End Sub
Мой вопрос
Есть ли способ изменить поведение «Выделить» только для этих ячеек, чтобы отключенные ячейки вообще не выделялись?