如何使ListView控件的背景颜色像WinAmp一样随着每个项目变化而变化,并更改列标题颜色?
如果您仔细观察,您会发现第一个项目是深灰色,第二个项目是黑色,依此类推。
ListViewItem.BackColor
属性,但必须手动为每个交替行执行此操作。或者,你可以使用DataGridView
,它具有一个AlternateRowStyle
属性,可以自动执行此操作 - 虽然你需要将行绑定到某种集合中,这是另一个话题。foreach (ListViewItem item in listView1.Items)
{
item.BackColor = item.Index % 2 == 0 ? Color.Red : Color.Black;
}
在列表框上处理DrawItem
事件,并将DrawMode
设置为OwnerDrawVariable
。
DrawItemEventArgs
提供了一个BackColor
属性,可以根据索引(也在参数中)设置其值。
我猜你是在循环中添加行(子项)?如果是这样,使用循环计数器来确定你想要的颜色。
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;
}
for (int index = 0; index <= ListView1.Items.Count; index++)
{
if (index % 2 == 0)
{
ListView1.Items(index).BackColor = Color.LightGray;
}
}
private static void RepaintListView(ListView lw)
{
var colored = false;
foreach (ListViewItem item in lw.Items)
{
item.BackColor = colored ? Color.LightBlue : Color.White;
colored = !colored;
}
}
您可以在添加项目后调用此方法。或者直接在添加时使用它。