如何使ListViews控件的项目背景颜色因WinAmp中的项目而异,以及更改列标题颜色?
如果仔细观察,可以看到第一项是深灰色,第二项是黑色等等。
答案 0 :(得分:9)
您可以设置ListViewItem.BackColor
属性,但必须手动为每个交替行完成。或者,您可以使用DataGridView
具有AlternateRowStyle
属性的foreach (ListViewItem item in listView1.Items)
{
item.BackColor = item.Index % 2 == 0 ? Color.Red : Color.Black;
}
自动执行此操作 - 尽管您需要在一系列排序中对您的行进行数据绑定,这是另一个主题。
对于简单的案例:
{{1}}
答案 1 :(得分:1)
处理列表框中的DrawItem
事件,并将DrawMode
设置为OwnerDrawVariable
。
DrawItemEventArgs
提供了BackColor
属性,可以根据索引(也在arg中)设置。
答案 2 :(得分:0)
我认为你在循环中添加行(子项)?如果是这样,请使用循环计数器来确定您想要的颜色。
string[] strings = new string[]{"dild", "dingo"};
int i = 0;
foreach (var item in strings)
{
Color color = i++ % 2 == 0 ? Color.LightBlue : Color.LightCyan;
ListViewItem lv = listView1.Items.Add(item);
lv.SubItems[0].BackColor = color;
}
答案 3 :(得分:0)
for (int index = 0; index <= ListView1.Items.Count; index++)
{
if (index % 2 == 0)
{
ListView1.Items(index).BackColor = Color.LightGray;
}
}
答案 4 :(得分:0)
private static void RepaintListView(ListView lw)
{
var colored = false;
foreach (ListViewItem item in lw.Items)
{
item.BackColor = colored ? Color.LightBlue : Color.White;
colored = !colored;
}
}
您可以在添加项目后调用此方法。或者直接在添加
上使用它