ListView1.OwnerDraw = true;
ListView1.View = View.Details;
// ListView-Überschriften zeichnen
private void ListView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawBackground();
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
// da StringAlignment.Center, muss die Breite für die Darstellung durch 2 geteilt werden
int iWidth = ListView1.Columns[e.ColumnIndex].Width / 2;
// Header-String zentriert, schwarz und fett zeichnen
e.Graphics.DrawString(e.Header.Text, new Font("Microsoft Sans Serif", 8.25F, FontStyle.Bold), Brushes.Black, e.Bounds.X + iWidth, e.Bounds.Y, sf);
}
// ListView-Subitems zeichnen
private void ListView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
switch (e.ColumnIndex)
{
case 0:
// Subitem 0 beinhaltet ein Bitmap
Bitmap b = new Bitmap(@"c:\temp\test.jpg");
e.Graphics.DrawImage(b, e.Bounds.X, e.Bounds.Y);
break;
default:
// für alle anderen SubItems
// halbe Spaltenbreite der akt. Spalte ausrechnen
int iWidth = ListView1.Columns[e.ColumnIndex].Width / 2;
// halbe Zellenhöhe ausrechnen
int iHeight = (int)(ListView1.Font.SizeInPoints / 2.0);
// String mit akt. Subitem-Text zeichnen
e.Graphics.DrawString(e.SubItem.Text, new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular), Brushes.Black, e.Bounds.X + iWidth, e.Bounds.Y + iHeight, sf);
break;
}
}
// ListView-Item Hintergrund speziell färben, wenn focusiert
private void ListView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
if (e.State == ListViewItemStates.Focused)
{
e.Graphics.FillRectangle(Brushes.Beige, e.Bounds);
e.DrawFocusRectangle();
}
}