Estoy tratando de cambiar el color de fondo de algunas filas en una ListBox
. Tengo dos listas que tiene nombres y se muestra en un ListBox
. La segunda lista tiene algunos valores similares a los de la primera List
. Al hacer clic en un botón, quiero buscar la ListBox
y la segunda List
, y cambiar el color de la ListBox
para los valores que aparecen en la List
. Mi búsqueda en la ListBox
es como sigue:
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é de qué método utilizar para cambiar la apariencia de un ListBox
fila. ¿Alguien puede ayudarme?
**EDITAR: **
HOLA me escribió 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 atrae mi List
en el ListBox
, pero cuando hago clic en el primer botón, se muestra en rojo sólo los estudiantes que están en el List
y cuando hago clic en el ListBox
atrae a todos los elementos. Quiero que se mostrará a todos los elementos , y cuando hago clic en el botón se mostrará a todos los elementos y el elemento que se encuentra en la List
en rojo. Donde está mi error?
- Dibujar tú mismo usando OwnerDraw: c-sharpcorner.com/UploadFile/sahuja/…
- posibles duplicados de stackoverflow.com/questions/1243870/…
- Después de la actualización: al parecer, usted no está obteniendo lo que el anterior ms responden a continuación mostramos. El método DrawItem dibuja un elemento, no varios elementos. Usted va a necesitar para manejar cada elemento según sea necesario, y no utilizar un bucle for para procesar todos los elementos. Echa un vistazo a Thomas Levesque o de Justin respuesta para buenos ejemplos.
- Pero si quiero mostrar dos récord en el listbox? Yo no podría hacer esto? 2 de 5 va a cambiar de color ,otros serán del mismo color.
- ¿Cuál es su condición para un registro a cambiar de color y a los demás para mostrar el mismo color? ¿Cómo podría usted indicar mediante programación a la diferencia?
- En mi programa voy a obtener direcciones mac de bluetooth para los estudiantes y compairing ellos con las direcciones mac en ese momento.En mi lixtbox antes de analizar la lista de todos los grupos de muestra .Después de escanear no debe ser de alta lited de estudiantes que existen en ese momento.Por esto estoy compaining Listbox1.los elementos[i].Contiene(existingstudents[i]). y este geves me los nombres de los estudiantes que son existentes en ese momento.Esta idea funciona, pero el cambio de color de la lista desplegable para spesific los usuarios no trabajar )_
- Dibujar el texto después de la parte de atrás motivos porque el dibujo primero elimina la cadena de correo.DrawFocusRectangle(); e.Gráficos.Cordón de ajuste(listBox1.Los elementos[e.Índice].ToString(), e.De la fuente, myBrush, e.Límites, StringFormat.GenericDefault);
- Posibles duplicados de color de Fondo de un elemento de ListBox (winforms)
Puedo encontrar la solución que en lugar de utilizar ListBox he utilizado ListView.Permite cambiar los elementos de la lista BackColor.
Es necesario dibujar el elemento de sí mismo. Cambiar el DrawMode a OwnerDrawFixed y manejar el evento DrawItem.
Primer uso de este espacio de Nombres:
Agregar esto en cualquier lugar en el formulario:
Aquí es el Controlador de Eventos:
Creo que tienes que dibujar la listitems a ti mismo para lograrlo.
He aquí un post con el mismo tipo de pregunta.
Puedo encontrar la solución para el listbox artículos de fondo a amarillo. He intentado de la siguiente solución para lograr la salida.
¿