Speriamo che questo vi aiuterà qualcuno in futuro, come il codice di cui sopra mi ha aiutato, ma non al 100%
Ho ancora avuto i seguenti problemi:
- quando ho selezionato un altro indice, l'indice appena selezionato evidenziava anche il rosso.
- quando ho cambiato la dimensione del carattere della casella di riepilogo, l'area evidenziata sarebbe troppo piccola.
Sotto correzioni problema
- cambiamento del DrawMode a OwnerDrawVariable
- creare un MeasurItem ed evento DrawItem per la casella di riepilogo
private void lstCartOutput_MeasureItem(object sender, MeasureItemEventArgs e)
{
// Cast the sender object back to ListBox type.
ListBox listBox = (ListBox)sender;
e.ItemHeight = listBox.Font.Height;
}
private void lstCartOutput_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox listBox = (ListBox)sender;
e.DrawBackground();
Brush myBrush = Brushes.Black;
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
myBrush = Brushes.Red;
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(0, 64, 64)), e.Bounds);
}
else
{
e.Graphics.FillRectangle(Brushes.White, e.Bounds);
}
e.Graphics.DrawString(listBox.Items[e.Index].ToString(),e.Font, myBrush, e.Bounds);
e.DrawFocusRectangle();
}
Ho anche fatto riferimento il sito MSDN .
fonte
2012-01-08 18:15:43
Sono riuscito ad applicare questo codice ma gli articoli sulla lista hanno il colore bianco sullo sfondo e in primo piano. Non riesco a capire perché lo farebbe? – Qosmo
imposta la proprietà 'DrawMode' a' DrawMode.OwnerDrawFixed'? – RRUZ
Sì, altrimenti se in Normal è il colore predefinito di Windows. – Qosmo