Il controllo ListView
non supporta le immagini in sottovoci in modo nativo. La cosa più semplice da fare è passare a DataGridView
e utilizzare uno DataGridViewImageColumn
. Se ciò non è possibile, dovrai disegnare tu stesso le icone usando il supporto del disegno personalizzato nel controllo ListView
. Per eseguire questa operazione, impostare ListView.OwnerDraw = true
e gestire gli eventi ListView.DrawSubItem
e ListView.DrawColumnHeader
.
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
// Only interested in 2nd column.
if (e.Header != this.columnHeader2)
{
e.DrawDefault = true;
return;
}
e.DrawBackground();
var imageRect = new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height);
e.Graphics.DrawImage(SystemIcons.Information.ToBitmap(), imageRect);
}
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true;
}
fonte
2009-12-11 16:22:44
perché non solo 'var imageRect = e.Bounds;' È un tipo di valore in modo che i valori vengano copiati e non referenziati per renderli sicuri da gestire. – ja72
Esposizione, nel mondo reale si potrebbe voler regolare imageRect per tenere conto di allineamento, riempimento e/o contenuto aggiuntivo contenuto nel sottoelemento. –