在特定条件下更改 ListView 项目的背景色
Change backcolor of ListView item on specific condition
我有一个包含三列的列表视图,其中一列是 'status' 列。我希望根据其中的值将此列中单元格的背景色涂成绿色或红色,但到目前为止我还没有找到正确的解决方案。
我找到了很多关于将背景色应用到整行的信息,但还没有关于对具有特定值的单元格这样做的信息。至少没有什么似乎有效。
if (emp.SubItems[2].ToString() == "AANWEZIG")
{
emp.BackColor = Color.Green;
}
首先,当您创建 ListViewItem
实例时,您需要将 ListViewItem.UseItemStyleForSubItems
设置为 false
。这样,ListViewItem
的 Font
、ForeColor
和 BackColor
将不会用于所有子项。
其次,您的 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;
}
}
我有一个包含三列的列表视图,其中一列是 'status' 列。我希望根据其中的值将此列中单元格的背景色涂成绿色或红色,但到目前为止我还没有找到正确的解决方案。
我找到了很多关于将背景色应用到整行的信息,但还没有关于对具有特定值的单元格这样做的信息。至少没有什么似乎有效。
if (emp.SubItems[2].ToString() == "AANWEZIG")
{
emp.BackColor = Color.Green;
}
首先,当您创建 ListViewItem
实例时,您需要将 ListViewItem.UseItemStyleForSubItems
设置为 false
。这样,ListViewItem
的 Font
、ForeColor
和 BackColor
将不会用于所有子项。
其次,您的 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;
}
}