在特定条件下更改 ListView 项目的背景色

Change backcolor of ListView item on specific condition

我有一个包含三列的列表视图,其中一列是 'status' 列。我希望根据其中的值将此列中单元格的背景色涂成绿色或红色,但到目前为止我还没有找到正确的解决方案。

我找到了很多关于将背景色应用到整行的信息,但还没有关于对具有特定值的单元格这样做的信息。至少没有什么似乎有效。

if (emp.SubItems[2].ToString() == "AANWEZIG")
                {
                    emp.BackColor = Color.Green;
                }

首先,当您创建 ListViewItem 实例时,您需要将 ListViewItem.UseItemStyleForSubItems 设置为 false。这样,ListViewItemFontForeColorBackColor 将不会用于所有子项。

其次,您的 if 语句需要检查 ListViewSubItem.Text 属性,而不是 ToString 的结果。 ToString 不只是 return 文本。

最后根据正文设置ListViewSubItem.BackColor

private void LoadListView()
{
   // Build up the ListViewItem that you're calling emp in your original question...
   emp.UseItemStyleForSubItems = false;
   if (emp.SubItems[2].Text == "AANWEZIG")
   {
      emp.SubItems[2].BackColor = Color.Green;
   }
}