Estoy tratando de cambiar el color de fondo de algunas filas en un ListBox
. Tengo dos listas que tienen nombres y se muestran en un ListBox
. La segunda lista tiene algunos valores similares a los primeros List
. Al hacer clic en un botón, quiero buscar el ListBox
y el segundo List
, y cambiar el color del ListBox
para los valores que aparecen en el List
. Mi búsqueda en el ListBox
es el siguiente:C#: cambiar el color de la fila del listbox?
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()))
{
}
}
}
Pero no sé qué método utilizar con el fin de cambiar la apariencia de una fila ListBox
. Alguien puede ayudarme?
** EDIT: **
HI Escribí mi código como sigue:
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();
}
Ahora me llama la List
en el ListBox
, pero cuando hago clic en el botón en primer lugar, se muestra en rojo solo los estudiantes que están en el List
y cuando hago clic en ListBox
dibuja todos los elementos. Quiero que muestre todos los elementos, y cuando haga clic en el botón, se mostrarán todos los elementos y el elemento encontrado en el List
en rojo. ¿Dónde está mi error?
Draw usted mismo usando OwnerDraw: http://www.c-sharpcorner.com/UploadFile/sahuja/OwnerDrawListBox11212005014826AM/OwnerDrawListBox.aspx –
posible duplicado de http://stackoverflow.com/questions/1243870/changing- selected-itms-color-in-a-listbox –
Después de su actualización: al parecer no está obteniendo lo que le mostraron los contendientes anteriores. El método DrawItem _ dibuja un elemento_, no múltiples elementos. Necesitará manejar _equipo cada uno según sea necesario_, y ** no ** usar un bucle for para procesar _todos elementos. Eche un vistazo a la respuesta de Thomas Levesque o Justin para ver buenos ejemplos. –