Cod*_*ray 56
解决方案相当简单,并在ListViewSubItem.ForeColor属性文档的备注部分中指出:
如果拥有子项的
UseItemStyleForSubItems属性ListViewItem设置为true,则设置此属性不起作用.
默认设置旨在为ListView控件中的单个项所拥有的所有子项保持一致的外观,以便您只需在一个位置更改属性.要更改默认行为,您需要将特定UseItemStyleForSubItems属性设置ListViewItem为"False".
完成后,您可以调整ForeColor单个子项目的(或任何其他)属性.例如:
myListView.Items[0].UseItemStyleForSubItems = false;
myListView.Items[0].SubItems[1].ForeColor = Color.Red;
Run Code Online (Sandbox Code Playgroud)
一种方法是为所有子项设置颜色并更改为您想要的颜色。
示例代码:
private void btn_Add_Click(object sender, EventArgs e)
{
ListViewItem lvi = new ListViewItem();
ListViewItem.ListViewSubItem lvsi1 = new ListViewItem.ListViewSubItem();
ListViewItem.ListViewSubItem lvsi2 = new ListViewItem.ListViewSubItem();
lvi.Text = tb_Main.Text;
lvsi1.Text = tb_Sub1.Text;
lvsi2.Text = tb_Sub2.Text;
lvi.UseItemStyleForSubItems = false;
lv_List.ForeColor = Color.Black;
if (lvsi1.Text == tb_Different.Text)
{
lvsi1.ForeColor = Color.Red;
}
if (lvsi2.Text == tb_Different.Text)
{
lvsi2[2].ForeColor = Color.Red;
}
lv_List.Items.Add(lvi);
lvi.SubItems.Add(lvsi1);
lvi.SubItems.Add(lvsi2);
}
Run Code Online (Sandbox Code Playgroud)

此示例将为每个具有值“Monday”的子项目着色
public static void colorList(ListView lsvMain)
{
foreach (ListViewItem lvw in lsvMain.Items)
{
lvw.UseItemStyleForSubItems = false;
for (int i = 0; i < lsvMain.Columns.Count; i++)
{
if (lvw.SubItems[i].Text.ToString() == "Monday")
{
lvw.SubItems[i].BackColor = Color.Red;
lvw.SubItems[i].ForeColor = Color.White;
}
else {
lvw.SubItems[i].BackColor = Color.White;
lvw.SubItems[i].ForeColor = Color.Black;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26689 次 |
| 最近记录: |