更改Listview行返回颜色C#

时间:2015-05-10 09:19:09

标签: c# listview

如何针对特定的子项值更改listView的背景颜色?我有一个状态列,我想将所有“ACTIVE”的背面颜色更改为黄色。

1 个答案:

答案 0 :(得分:0)

您想要访问条目的SubItems。在非虚拟列表视图中,这将是这样的:

foreach(ListViewItem lvi in listView1)
{
    if(lvi.SubItems[colToCheck].Text == "ACTIVE")
    {
        lvi.BackColor = Color.Yellow;
    }
}

将此位置放在已填充列表的位置。由于您在评论中提到了表单加载,我认为存在一个用List填充ListView的方法。之后放上上面的代码片段。

如果您有虚拟列表,请检查RetrieveVirtualItem中的相应项属性:

  private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
  {
      var lvi = GenerateListViewItemFromTheStore(e.ItemIndex);
      if (lvi != null)
      {
          if (lvi.SubItems[colToCheck].Text == "ACTIVE")
              lvi.BackColor = Color.Yellow;
      }
      else
          e.Item = new ListViewItem();
  }

在两个代码段中colToCheck是要检查文本等于 ACTIVE 的列的列索引。