改变ListViews项目背景颜色

时间:2010-10-25 08:10:29

标签: c# listview

如何使ListViews控件的项目背景颜色因WinAmp中的项目而异,以及更改列标题颜色?

http://i.stack.imgur.com/30pQy.png

如果仔细观察,可以看到第一项是深灰色,第二项是黑色等等。

5 个答案:

答案 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设置为OwnerDrawVariableDrawItemEventArgs提供了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;
    }
}

您可以在添加项目后调用此方法。或者直接在添加

上使用它