如何更改ListView控件中单个子项的ForeColor?

Ped*_*dro 22 .net c# listview winforms

我有一个Windows窗体应用程序,我有一个ListView控件.我想改变一个子项目的前景色.虽然我已经设法改变整行或列的颜色,但我还没有找到一种方法来为一个子项目做这个.有谁知道这样做的方法?

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)


Wol*_*fyD 7

一种方法是为所有子项设置颜色并更改为您想要的颜色。

示例代码:

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)

图片


Kiz*_*pel 5

此示例将为每个具有值“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)

上面代码的结果截图