我怎样才能让它的ListViews控件的背景颜色的项目不同,像WinAmp项目一样,随着更改列标题的颜色?不同的ListViews项背景颜色
如果你仔细观察,你可以看到的第一个项目是深灰色的,第二个是黑等。
我怎样才能让它的ListViews控件的背景颜色的项目不同,像WinAmp项目一样,随着更改列标题的颜色?不同的ListViews项背景颜色
如果你仔细观察,你可以看到的第一个项目是深灰色的,第二个是黑等。
您可以设置ListViewItem.BackColor
属性,但必须手动完成每个交替线。或者,您可以使用DataGridView
,它具有AlternateRowStyle
属性,可以自动执行此操作 - 尽管您需要将数据绑定到一系列其他主题的集合中。
对于简单的情况:
foreach (ListViewItem item in listView1.Items)
{
item.BackColor = item.Index % 2 == 0 ? Color.Red : Color.Black;
}
我认为你在一个循环中添加行(子项目)?如果是这样,使用循环计数器来确定你想要的颜色。
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;
}
}
在你的代码中,首先所有的项目都将以单一颜色绘制,之后 - 其中的1/2将被重新绘制。我想这不是很有效率。所以最好在添加时画出它们,即只有一次。 – abatishchev 2010-10-25 08:43:12
是的!我同意......只是,我无法在ListView中找到Item Add事件... Item Paint和Sub Item Paint事件似乎没有引发.... – 2010-10-25 09:24:19
private static void RepaintListView(ListView lw)
{
var colored = false;
foreach (ListViewItem item in lw.Items)
{
item.BackColor = colored ? Color.LightBlue : Color.White;
colored = !colored;
}
}
您可以拨打项目加入后此方法。或直接使用它添加
处理列表框上的DrawItem
事件并将DrawMode
设置为OwnerDrawVariable
。 DrawItemEventArgs
提供BackColor
属性,可以根据索引设置属性(同样在arg中)。
如果我们想绘制一个空列表视图,我们应该怎么做 – SurajSing 2013-05-07 10:27:08