vb.net - ObjectListView - FormatRow 事件不适用于 ForeColor

标签 vb.net formatting row objectlistview

我正在尝试使用 FormatRow 事件格式化 ObjectListView 中的一行,并根据值将整行设置为不同的 ForeColor,但是无济于事。

我的代码:

Private Sub lsv_OpenTickets_FormatRow(sender As Object, e As FormatRowEventArgs) Handles lsv_OpenTickets.FormatRow
    Dim tkt As Ticket = DirectCast(e.Model, Ticket)
    If tkt.due = "Overdue" Then
        e.Item.ForeColor = Color.FromArgb(252, 146, 156)
    End If
End Sub

似乎只将行中的第一个 Item 设置为指定的颜色,并且每个其他 SubItem 都使用默认颜色绘制。

如果我将代码更改为:

e.Item.BackColor = Color.FromArgb(252, 146, 156)

然后它将整行正确地绘制为背景色。它似乎不适用于 ForeColor。

也许我做错了什么?或者错过了什么?

最佳答案

好的,事实证明 e.Item.ForeColor 似乎只对行中的第一个 SubItem 应用格式 - 而不是我想象的所有 SubItem。不确定这是故意的还是错误,或者我是否编码不正确,但对我来说,“Item”对应于整行,而 SubItem 对应于单个单元格。

无论如何,为了解决我的问题,我将代码修改为以下内容:

Private Sub lsv_OpenTickets_FormatRow(sender As Object, e As FormatRowEventArgs) Handles lsv_OpenTickets.FormatRow
    Dim tkt As Ticket = DirectCast(e.Model, Ticket)
    If tkt.due = "OVERDUE" Then
        For Each sb As OLVListSubItem In e.Item.SubItems
            sb.ForeColor = Color.FromArgb(252, 146, 159)
        Next
    End If
End Sub

这现在为我提供了所需的结果,并且还适用于 FormatCell 事件,因为单个单元格格式设置将覆盖行格式设置。

关于vb.net - ObjectListView - FormatRow 事件不适用于 ForeColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25307988/

相关文章:

c# - 需要一个在 VB.NET 中使用的 C# 类的工作示例

vb.net - 创建一个文本文件并写入

c# - 如何格式化未在 C# MVC 中初始化的小数?

java - JTextArea 中的行

Python 报告实验室 RML。如何在两个页面上拆分表格行

c# - 如何启动未提升的进程

VB.NET连接字符串(Web.Config,App.Config)

sass - gulp-css-comb : "Please check the validity" 问题

r - 如何将 'day' 格式化为 POSIXct 日期中的单个数字

python - 查找多行的索引