Ich versuche, die Hintergrundfarbe einiger Zeilen in einem ListBox
zu ändern. Ich habe zwei Listen, dass man Namen hat und in einem ListBox
angezeigt wird. Die zweite Liste hat einige ähnliche Werte wie die erste List
. Wenn ich auf eine Schaltfläche klicke, suche ich die ListBox
und die zweite List
, und ändern Sie die Farbe der ListBox
für die Werte, die in List
erscheinen. Meine Suche im ListBox
ist wie folgt:C#: Listbox Zeilenfarbe ändern?
for (int i = 0; i < listBox1.Items.Count; i++)
{
for (int j = 0; j < students.Count; j++)
{
if (listBox1.Items[i].ToString().Contains(students[j].ToString()))
{
}
}
}
Aber ich weiß nicht, welche Methode zu verwenden, um das Aussehen einer ListBox
Zeile zu ändern. Kann mir jemand helfen?
** EDIT: **
HALLO schrieb ich meinen Code wie folgt:
private void ListBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
Graphics g = e.Graphics;
Brush myBrush = Brushes.Black;
Brush myBrush2 = Brushes.Red;
g.FillRectangle(new SolidBrush(Color.Silver), e.Bounds);
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
for (int i = 0; i < listBox1.Items.Count; i++)
{
for (int j = 0; j < existingStudents.Count; j++)
{
if (listBox1.Items[i].ToString().Contains(existingStudents[j]))
{
e.Graphics.DrawString(listBox1.Items[i].ToString(),
e.Font, myBrush2, e.Bounds, StringFormat.GenericDefault);
}
}
}
e.DrawFocusRectangle();
}
Jetzt zieht es meine List
im ListBox
, aber wenn ich auf die Schaltfläche klicken Sie zuerst auf, es zeigt in rot nur die Studenten, die in der List
sind und wenn ich auf die ListBox
klicke, zieht es alle Elemente an. Ich möchte, dass es alle Elemente zeigt, und wenn ich auf die Schaltfläche klicke, werden alle Elemente und das Element in List
rot angezeigt. Wo ist mein Fehler?
Zeichnen Sie es selbst mit OwnerDraw: http://www.c-sharpcorner.com/UploadFile/sahuja/OwnerDrawListBox11212005014826AM/OwnerDrawListBox.aspx –
möglich Duplikat http://stackoverflow.com/questions/1243870/changing- selected-itms-color-in-a-listbox –
Nach deinem Update: anscheinend bekommst du nicht das, was dir die vorherigen Beantworter unten gezeigt haben. Die DrawItem-Methode _erzeugt ein Element_, nicht mehrere Elemente. Sie müssen _jedes Element nach Bedarf behandeln _ und ** nicht ** eine For-Schleife verwenden, um alle Elemente zu verarbeiten. Werfen Sie einen Blick auf Thomas Levesques oder Justins Antwort für gute Beispiele. –