如何在listView中为另一种颜色的每个项目着色?

时间:2017-03-14 00:40:17

标签: c# .net winforms

首先是这种处理listView的方式在构造函数中添加项是正确的方法吗?第二,我如何为红色的所有文本“Ready”着色?只有“准备好了”?

        listView1.View = View.Details;
        listView1.GridLines = true;
        listView1.FullRowSelect = true;

        //Add column header
        listView1.Columns.Add("Status", 70);
        listView1.Columns.Add("Country", 70);
        listView1.Columns.Add("Link", 399);

        string[] arr = new string[countriesCodes.Length];
        ListViewItem itm;
        for (int i = 0; i < countriesCodes.Length; i++)
        {
            arr[0] = "Ready";
            arr[1] = countriesCodes[i];
            arr[2] = lines[i];
            itm = new ListViewItem(arr);
            listView1.Items.Add(itm);
        }

运行prgoram时listview的屏幕截图: 我想仅将“状态”行的颜色设置为红色,我的意思是仅将文本“就绪”用红色着色,其余部分不用颜色。

All is in red

如果我正在添加此方法:

private void colorReady()
        {
            foreach (ListViewItem li in listView1.Items)
            {
                if (li.Text == "Ready")
                {
                    li.ForeColor = Color.Red;
                }
            }
        }

然后调用colorReady();在设置所有listView之后的构造函数中,它将为listView中的所有项目着色,就像它在屏幕截图中显示的一样。

1 个答案:

答案 0 :(得分:2)

制作一个空格并将其命名为任何名称,我将其命名为colorReady

    private void colorReady()
    {
        foreach (ListViewItem li in listView1.Items)
        {
            if(li.Text == "Ready")
            {
                li.SubItems.Add("Color");
                li.SubItems[0].ForeColor = Color.Red;
                li.UseItemStyleForSubItems = false;
            }
        }
    }

然后在上面的代码之后调用它。

        listView1.View = View.Details;
        listView1.GridLines = true;
        listView1.FullRowSelect = true;

        //Add column header
        listView1.Columns.Add("Status", 70);
        listView1.Columns.Add("Country", 70);
        listView1.Columns.Add("Link", 399);
        string[] countriesCodes = new string[] { "test1", "test2", "test3" };
        string[] arr = new string[countriesCodes.Length];
        ListViewItem itm;
        for (int i = 0; i < countriesCodes.Length; i++)
        {
            arr[0] = "Ready";
            arr[1] = countriesCodes[i];
            itm = new ListViewItem(arr);
            listView1.Items.Add(itm);
        }

        colorReady();

添加一个不准备好的项目&#39;测试结果。