Welcome to MSDN Blogs Sign in | Join | Help

SYSK 109: Is it possible to change the ForeColor of a SubItem in a ListView?

The other day I came across the question above at http://www.codecomments.com/archive293-2004-7-244806.html, which did not provide the way to accomplish the desired effect.  The answer is – yes, you can.  Here is how you might go above doing it in .NET 2.0 (key lines of code in bold):

 

public class Employee

{

    private string _name;

    private int _id;

    private string _department;

 

    public Employee(string name, int id, string department)

    {

        _name = name;

        _id = id;

        _department = department;

    }

 

    public string Name

    {

        get { return _name; }

    }

 

    public int ID

    {

        get { return _id; }

    }

 

    public string Department

    {

        get { return _department; }

    }

 

    public string[] Data

    {

        get { return new string[] { _name, _id.ToString(), _department }; }

    }

}

 

 

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

    }

 

 

    private void Form1_Load(object sender, EventArgs e)

    {

    Employee e1 = new Employee("Irena Kennedy", 12345, "IT");

    Employee e2 = new Employee("Mike Smith", 23456, "Sales");                         

 

    this.listView1.Columns.Add("Name");

    this.listView1.Columns.Add("ID");

    this.listView1.Columns.Add("Department");

 

    this.listView1.View = View.Details;

    this.listView1.Items.Add(new ListViewItem(e1.Data));

    this.listView1.Items.Add(new ListViewItem(e2.Data));

 

    this.listView1.OwnerDraw = true;

    this.listView1.DrawItem += new DrawListViewItemEventHandler(listView1_DrawItem);

    this.listView1.DrawColumnHeader += new DrawListViewColumnHeaderEventHandler(listView1_DrawColumnHeader);

    this.listView1.DrawSubItem += new DrawListViewSubItemEventHandler(listView1_DrawSubItem);

    }

 

    private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)

    {

        e.DrawDefault = false;

    }

 

    private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)

    {

        e.DrawDefault = true;

    }

 

    private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)

    {

        if (e.ColumnIndex == 2)

        {

            if (e.SubItem.Text == "IT")

                e.SubItem.ForeColor = Color.Red;                   

        }           

    }

}

 

 

Published Thursday, April 20, 2006 5:04 AM by irenak

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker