System.Windows.Forms.ListView の SubItem (特定列)だけ色を変える
下記の前提で、特定の列だけ色を変えたいときの書き方。 ヘッダは別途オーナードローが必要。
VirtualMode = true
View = Details
private void ListView_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
{
if (e.ItemIndex < 0 || e.ItemIndex >= _hogeList.Count)
{
e.Item = new ListViewItem(new string[] { "", "", "", "", "", "" });
return;
}
e.Item = new ListViewItem(new string[] {
"index 0",
"index 1",
"index 2",
"index 3",
"index 4",
"index 5",
});
if (_isPiyo)
{
e.Item.UseItemStyleForSubItems = false;
// index 3 だけ変更。
e.Item.SubItems[3].BackColor = Color.Plum;
}
}