Morten ,
DrawListViewSubItemEventArgs
DrawListViewColumnHeaderEventArgs
"Could not be found" in spite of referenceing System.Windows.Forms
Adrian.
You don't need the Drawing namespaces, just the regular
System.Windows.Forms namespace
Upon further reading it looks like the DrawItem event isn't needed,
so using the DrawColumnHeader event and DrawSubItem event the code below
works
The code also checks
ListView lv = new ListView();
public Form1()
{
InitializeComponent();
lv.View = View.Details;
lv.OwnerDraw = true;
lv.Size = new Size(200, 100);
lv.DrawColumnHeader += new
DrawListViewColumnHeaderEventHandler(lv_DrawColumnHeader);
lv.DrawSubItem += new
DrawListViewSubItemEventHandler(lv_DrawSubItem);
lv.Columns.Add("Col1");
lv.Columns.Add("Col1");
lv.Columns.Add("Col1");
this.Controls.Add(lv);
lv.Items.Add(new ListViewItem(new string[] { "One", "Two",
"Three" }));
lv.Items.Add(new ListViewItem(new string[] { "One", "Two",
"Three" }));
lv.Items.Add(new ListViewItem(new string[] { "One", "Two",
"Three" }));
}
void lv_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
if ((e.ItemState & ListViewItemStates.Focused) > 0)
{
e.Graphics.FillRectangle(SystemBrushes.Highlight,
e.Bounds);
e.Graphics.DrawString(e.Item.Text, lv.Font,
SystemBrushes.HighlightText, e.Bounds);
}
else
{
e.DrawBackground();
e.DrawText();
}
}
void lv_DrawColumnHeader(object sender,
DrawListViewColumnHeaderEventArgs e)
{
e.Graphics.FillRectangle(Brushes.GreenYellow, e.Bounds);
e.DrawText();
}
How to deal with these errors?
DrawListViewItemEventArgs' could not be found
DrawListViewSubItemEventArgs' could not be found
DrawListViewColumnHeaderEventArgs' could not be found
I am referencing
System.Drawing
System.Drawing.Design
There are no other System.Drawing libraries to reference
Adrian.
Hi Adrian,
You need to specify OwnerDraw = true on the ListView properties and
subscribe to the DrawColumnHeader event. You are then responsible for
displaying the header information any way you chose. You also have to
subscribe to the DrawItem event and draw the list items.
When working with ownerdrawn controls, remember that the event state is a
combination of several states when testing for wether to draw a
highlighted or selected item.