【问题标题】:xtragrid Cell and rows Selection Using Devexpress Winforms Vb.netxtragrid 单元格和行选择使用 Devexpress Winforms Vb.net
【发布时间】:2018-03-24 03:44:20
【问题描述】:
Private Sub GridView1_RowCellStyle(sender As Object, e As 
    RowCellStyleEventArgs) Handles GridView1.RowCellStyle
    Try
        If IsDBNull(e.CellValue) Then
            e.Appearance.BackColor = Color.LightYellow
        End If
        Dim selectedCells As GridCell() = GridView1.GetSelectedCells()
        isRowSelected = GridView1.IsRowSelected(e.RowHandle)
        For Each Cells In selectedCells
            If GridView1.GetSelectedCells.Count = 1 Then
                If IsDBNull(GridView1.GetRowCellValue(Cells.RowHandle, 
                    Cells.Column)) Then
                    e.Appearance.BackColor = Color.LightYellow
                End If
            Else
                If isRowSelected Then
                    If IsDBNull(GridView1.GetRowCellValue(Cells.RowHandle, 
                        Cells.Column)) Then
                        e.Appearance.BackColor = Color.FromArgb(226, 234, 
                            253)
                    End If
                End If
            End If
        Next
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

我正在使用 DevExpress。我声明“DbNull”值应该是“Lightyellow”中的默认颜色。在我想要选择“DbNull”值中的行或单元格来更改蓝色之后。我做错了什么? 我想选择要更改颜色的单元格或行(也为空值)

【问题讨论】:

  • 什么应该变成蓝色?整行,还是只是那个单元格?
  • 选定的行或单元格要更改为蓝色。(也为空值)

标签: vb.net winforms devexpress xtragrid gridcontrol


【解决方案1】:

在 RowCellStyle 事件处理程序中遍历选定的单元格是没有意义的,因为该事件仅针对单个单元格引发。最终,它会针对所有可见单元格升高。

因此,以下代码足以完成您的任务:

Private Sub GridView1_RowCellStyle(ByVal sender As Object, ByVal e As RowCellStyleEventArgs)
    Dim view As GridView = TryCast(sender, GridView)
    Dim isRowSelected As Boolean = view.IsRowSelected(e.RowHandle)
    If IsDbNull(e.CellValue) AndAlso (Not isRowSelected) Then
        e.Appearance.BackColor = Color.Yellow
    End If
End Sub

它对你有用吗?

【讨论】:

  • No.i 选择了特定的 HireDate 列单元格,但几乎为空的单元格值也会更改黄色。但我只需要选择空值即可将颜色更改为蓝色。
【解决方案2】:
Dim state As GridRowCellState
        state = DirectCast(e.Cell, GridCellInfo).State
        If (state And GridRowCellState.Selected) = GridRowCellState.Selected Then
            e.Appearance.BackColor = Color.FromArgb(226, 234, 253)
        End If

此代码用于选择要更改外观颜色的单元格。 GridRowCellState is 包含网格控件的外观自定义事件的行单元格状态。Selected Cells is 指定当前正在处理的行/单元格被选中。 This is My Output

【讨论】:

  • 不鼓励仅使用代码的答案。你能添加详细解释你的答案吗?
  • 请查看How do I write a good answer。不鼓励仅使用代码的答案,因为它们没有解释如何解决问题中的问题。您应该更新您的答案以解释它的作用以及它如何解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
相关资源
最近更新 更多