¿Cómo se puede cambiar el color de fondo de los encabezados de un ListView?Cambiar el color de fondo de los encabezados ListView de Winform
Respuesta
Puede hacer esto estableciendo la propiedad OwnerDraw para que la vista de lista sea verdadera.
Esto le permite proporcionar controladores de eventos para los eventos de sorteo de la lista.
Hay un ejemplo detallado sobre MSDN
A continuación se muestra un código de ejemplo para establecer el color de cabecera a rojo:
private void listView1_DrawColumnHeader(object sender,
DrawListViewColumnHeaderEventArgs e)
{
e.Graphics.FillRectangle(Brushes.Red, e.Bounds);
e.DrawText();
}
Creo (pero estoy feliz de estar equivocado) que con el conjunto OwnerDraw true, tendrá que proporcionar también manejadores para los otros eventos de sorteo que tienen implementaciones por defecto como se muestra a continuación:
private void listView1_DrawItem(object sender,
DrawListViewItemEventArgs e)
{
e.DrawDefault = true;
}
Desde luego, no tengo ma para hacer que la vista de lista dibuje los elementos sin eso.
Como advertencia, porque me llevó más de una hora descubrirlo, ¡no coloque un comando MSGBOX dentro del drawcolumnheader! Se cuelga vb.net, esto funcionó bien de otra manera – cardmagik
Sé que esto es un poco tarde para la fiesta, pero todavía vi esta publicación y esto me habría ayudado. Aquí es una pequeña aplicación abstraída del código David suministra
using System.Windows.Forms;
using System.Drawing;
//List view header formatters
public static void colorListViewHeader(ref ListView list, Color backColor, Color foreColor)
{
list.OwnerDraw = true;
list.DrawColumnHeader +=
new DrawListViewColumnHeaderEventHandler
(
(sender, e) => headerDraw(sender, e, backColor, foreColor)
);
list.DrawItem += new DrawListViewItemEventHandler(bodyDraw);
}
private static void headerDraw(object sender, DrawListViewColumnHeaderEventArgs e, Color backColor, Color foreColor)
{
e.Graphics.FillRectangle(new SolidBrush(backColor), e.Bounds);
e.Graphics.DrawString(e.Header.Text, e.Font, new SolidBrush(foreColor), e.Bounds);
}
private static void bodyDraw(object sender, DrawListViewItemEventArgs e)
{
e.DrawDefault = true;
}
A continuación, llamar a esto en su forma constructor
public Form()
{
InitializeComponent();
*CLASS NAME*.colorListViewHeader(ref myListView, *SOME COLOR*, *SOME COLOR*);
}
basta con sustituir el nombre de la clase * * con cualquier clase de poner el primer bit de código en y el * ALGUNOS COLORES * con algún tipo de color.
//Some examples:
Color.white
SystemColors.ActiveCaption
Color.FromArgb(0, 102, 255, 102);
¡Buena suerte!
- 1. ¿Cambiar el color de selección de fondo de ListView?
- 2. Cambiar el color de fondo en las filas, pero no en los encabezados de las filas
- 3. Cambiar el fondo de ListView: comportamiento extraño
- 4. Cambiar el color de fondo de NSButton
- 5. Cambiar el color de la barra de título en WinForm
- 6. Cambiando el color de los encabezados de sección de UITableView
- 7. Cambiar el color de fondo en NSAttributedString
- 8. Cambiar el color de fondo UIButton
- 9. xterm: cómo cambiar el color de fondo?
- 10. Cambiar el color de fondo de la fila ListView mediante programación (wpf)
- 11. cómo cambiar el color de la cabecera winform DataGridview?
- 12. ¿Cómo cambiar el color de los elementos de ListView en el enfoque y en tecleo
- 13. ggplot2 facet_grid() cambiar color de fondo
- 14. Cambiar color de fondo y color de fuente
- 15. Cambiar el color de fondo de los planos de los ejes de una trama 3D matplotlib
- 16. ¿Puedo cambiar el color de fondo de la consola Firebug?
- 17. Cambiar el color de fondo de una etiqueta en C#
- 18. div color de fondo, para cambiar onhover
- 19. Cambiar color de fondo ActionBar Tabs
- 20. Cambiar el color de fondo de líneas en la pila
- 21. Cambiar el color de fondo de un panel intellij
- 22. JTable cómo cambiar color de fondo
- 23. ¿Cómo cambiar el color de fondo de JOptionPane?
- 24. Cambiar el color de fondo de DateTimePicker en .NET
- 25. UISearchBar: cambiar el color de fondo del campo de entrada
- 26. Cómo cambiar el color de fondo de wx.Panel en MouseOver?
- 27. Cómo cambiar el color de fondo de la vista enfocada
- 28. Cambiar el color de fondo de jQuery deslizador
- 29. ¿Cómo cambiar el color de fondo de JTabbedPane?
- 30. Cambiar el color de fondo de un NSCollectionView
tendrá que implementar un dibujo personalizado anulando el evento Paint. –
anulando el método Paint no hace nada en un ListView. Necesita utilizar el mecanismo OwnerDraw que sugirió @David. Solo recuerde que al hacerlo, elimina todo el estilo del control de encabezado: no hay elemento activo, ni indicadores de orden, ni fondos degradados. – Grammarian