Ändern der Markierungsfarbe in Listbox ?

Ulrich Michalik

Grünschnabel
In dem unten angegebenen Listing setze ich Listboxeinträgen je nach Bedarf und Eigenschaft unterschiedliche Textfarben. Leider passt sich die markierte Zeile nicht der ensprechenden Textfarbe an, so das die markierte Zeile oft ncht lesbar ist.
Gibt es eine möglichkeit die den Markierunghintergrund farblich Zeile für Zeile zu ändern.



protected override void ListBoxDrawItem(System.Windows.Forms.DrawItemEventArgs e)
{
if (e.Index >= 0)
{


if (m_iListboxColored == 1)

{


if (((CEventReport)m_frmDefault.listBox1.Items[e.Index]).ReportType == enmReportType.Error)
{
e.DrawBackground();
e.Graphics.DrawString(((CEventReport)m_frmDefault.listBox1.Items[e.Index]).Reportstring,e.Font,new SolidBrush(System.Drawing.Color.Red),e.Bounds);
}
else if (((CEventReport)m_frmDefault.listBox1.Items[e.Index]).ReportType == enmReportType.OK)
{
e.DrawBackground();
e.Graphics.DrawString(((CEventReport)m_frmDefault.listBox1.Items[e.Index]).Reportstring,e.Font,new SolidBrush(System.Drawing.Color.Green),e.Bounds);
}
else
{
e.DrawBackground();
e.Graphics.DrawString(((CEventReport)m_frmDefault.listBox1.Items[e.Index]).Reportstring,e.Font,new SolidBrush(System.Drawing.Color.DodgerBlue),e.Bounds);
}

}
else
{
if (((CEventReport)m_frmDefault.listBox1.Items[e.Index]).ReportType == enmReportType.Error)
{
e.DrawBackground();
e.Graphics.DrawString(((CEventReport)m_frmDefault.listBox1.Items[e.Index]).Reportstring,e.Font,new SolidBrush(System.Drawing.Color.Red),e.Bounds);
}
else
{
e.DrawBackground();
e.Graphics.DrawString(((CEventReport)m_frmDefault.listBox1.Items[e.Index]).Reportstring,e.Font,new SolidBrush(e.ForeColor),e.Bounds);
}
}
}
}
 
hi, ich habe da mal so ein beispiel, dass so ähnlich wie deins ist gebraucht.
wenn das teil selektiert ist, musst du die fontfarbe einfach auf weiß setzen, dann sieht man die. und danach halt wieder auf deine alte farbe.
dazu brauchst du halt noch ein eigenes listitem
 
Zurück