我怎樣才能讓它的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