我在ListView中有三列,我想要将第三列中的每个值更改为绿色前景。
用户名,电子邮件,状态
这些是我的三列,所有列也都被命名为。
我尝试了类似的功能,但失败了,因为它只是将它添加到listview中,而不是在第三列值添加到listView时更改它的颜色。
var Status = new ListViewItem("Status");
Status.SubItems[0].ForeColor = Color.FromArgb(-16711936);
Status.UseItemStyleForSubItems = false;
Pless_ListView.Items.Add(Status);
我也尝试过这么简单的事情,但仍然没有运气。
Pless_ListView.Items[2].ForeColor = Color.Green;
我也尝试过编辑它,将状态值添加到ListView,如下所示。
account.SubItems.Add(Status).ForeColor = Color.Green;
这也没有运气。
我也试图搜索并且没有运气在哪里找到答案。
编辑:
这是我添加到ListView代码。
void ColorLvColumn(ListView lv, int columnIndex, Color color, bool foreground)
{
foreach (ListViewItem lvi in lv.Items)
{
lvi.UseItemStyleForSubItems = false; // allow individual styles for subitems!
if (columnIndex < lvi.SubItems.Count)
{
if (foreground) lvi.SubItems[columnIndex].ForeColor = color;
//else lvi.SubItems[columnIndex].BackColor = color;
}
}
}
private void addAccountToPlessLV(String Username, String Password, PlessHTTP captured)
{
if (InvokeRequired)
{
Invoke(new MethodInvoker(delegate
{
ColorLvColumn(Pless_ListView, 2, Color.Green, true);
ListViewItem account = new ListViewItem { Text = Username };
account.SubItems.Add(Email);
account.SubItems.Add(captured.Status).BackColor = Color.Green;
Pless_ListView.Items.Add(account);
}));
}
else
{
ColorLvColumn(Pless_ListView, 2, Color.Green, true);
ListViewItem account = new ListViewItem { Text = Username };
account.SubItems.Add(Email);
account.SubItems.Add(captured.Status)
Pless_ListView.Items.Add(account);
}
}
答案 0 :(得分:1)
这为列中的每个项目/子项目设置颜色:
void ColorLvColumn(ListView lv, int columnIndex, Color color, bool foreground)
{
foreach (ListViewItem lvi in lv.Items)
{
lvi.UseItemStyleForSubItems = false; // allow individual styles for subitems!
if (columnIndex < lvi.SubItems.Count)
{
if (foreground) lvi.SubItems[columnIndex].ForeColor = color;
else lvi.SubItems[columnIndex].BackColor = color;
}
}
}
这样称呼:
ColorLvColumn( Pless_ListView, 2, Color.Green, true);
关于代码的两点说明:
我注意到你写了:Status.SubItems[0]
但第三列是Status.SubItems[2]
。
要为其着色,您必须先添加缺少的两个子项。
可以使用构造函数执行此操作:
ListViewItem.ListViewSubItem lvsi = new ListViewItem.ListViewSubItem();
lvsi.ForeColor = Color.LimeGreen;
并将其添加到Items.SubItems
集合中:
someItem.subItems.Addlvsi ();
但添加SubItems(string)
重载也同样有效。请注意,必须按顺序添加它们!
请注意,创建Columns
不会创建任何SubItems
。它只是创建了一个可以显示SubItems
的空间。
这意味着ListViewItems.SubItems
是一个锯齿状阵列!