Tengo una aplicación Windows Form en la que tengo un control ListView
. Quiero cambiar el color de un solo subtema. Aunque he logrado cambiar el color de una fila o columna completa, no he encontrado una manera de hacer esto para un solo subelemento. ¿Alguien sabe de una manera de hacer esto?¿Cómo puedo cambiar el ForeColor de un único sub artículo en un control ListView?
Respuesta
La solución es bastante simple, y se indica en el apartado de comentarios de la documentación para el ListViewSubItem.ForeColor
property:
Si la propiedad
UseItemStyleForSubItems
delListViewItem
que posee el subtema se establece en true, establecer esta propiedad tiene sin efecto.
La configuración por defecto tiene la intención de mantener una apariencia coherente para todos los subelementos propiedad de un único elemento en un control ListView
modo que es suficiente con cambiar las propiedades en un solo lugar. Para cambiar el comportamiento predeterminado, debe configurar el UseItemStyleForSubItems
property de un determinado ListViewItem
en "False".
Una vez que hayas hecho esto, se puede ajustar el ForeColor
(o cualquier otra) propiedad de un subtema individuo. Por ejemplo:
myListView.Items[0].UseItemStyleForSubItems = false;
myListView.Items[0].SubItems[1].ForeColor = Color.Red;
Así es como lo hice para mostrar los resultados de una inserción/extracción SCCM multicliente. El CSV pasado era (string ClientName, string PackageName, string EventType, bool Result), pero quería mostrar el campo más largo, Package Name por último, y tener los resultados donde sería más fácil ver el color para el éxito/fracaso.
private void MultiClientResultForm_Load(object sender, EventArgs e)
{
foreach (string token in Main.ClientListResults)
{
string[] ResultRecord = token.Split(new string[] { "," }, StringSplitOptions.None);
if (ResultRecord[0] != "")
{
ListViewItem row = new ListViewItem(ResultRecord[0]);
row.SubItems.Add(new ListViewItem.ListViewSubItem(row, ResultRecord[2]));
if (ResultRecord[3] == "true")
{
row.SubItems.Add(new ListViewItem.ListViewSubItem(row, "Success"));
row.SubItems[2].ForeColor = Color.ForestGreen;
}
else
{
row.SubItems.Add(new ListViewItem.ListViewSubItem(row, "Fail"));
row.SubItems[2].ForeColor = Color.DarkRed;
}
row.SubItems.Add(new ListViewItem.ListViewSubItem(row, ResultRecord[3]));
row.SubItems.Add(new ListViewItem.ListViewSubItem(row, ResultRecord[1]));
listViewResults.Items.Add(row);
}
}
}
Una manera sería establecer el color para todos los subelementos y cambiar para el que desee.
código Ejemplo:
private void btn_Add_Click(object sender, EventArgs e)
{
ListViewItem lvi = new ListViewItem();
ListViewItem.ListViewSubItem lvsi1 = new ListViewItem.ListViewSubItem();
ListViewItem.ListViewSubItem lvsi2 = new ListViewItem.ListViewSubItem();
lvi.Text = tb_Main.Text;
lvsi1.Text = tb_Sub1.Text;
lvsi2.Text = tb_Sub2.Text;
lvi.UseItemStyleForSubItems = false;
lv_List.ForeColor = Color.Black;
if (lvsi1.Text == tb_Different.Text)
{
lvsi1.ForeColor = Color.Red;
}
if (lvsi2.Text == tb_Different.Text)
{
lvsi2![enter image description here][2].ForeColor = Color.Red;
}
lv_List.Items.Add(lvi);
lvi.SubItems.Add(lvsi1);
lvi.SubItems.Add(lvsi2);
}
este ejemplo de color cada subelemento que tiene el valor "Lunes"
public static void colorListcolor(ListView lsvMain)
{
foreach (ListViewItem lvw in lsvMain.Items)
{
lvw.UseItemStyleForSubItems = false;
for (int i = 0; i < lsvMain.Columns.Count; i++)
{
if (lvw.SubItems[i].Text.ToString() == "Monday")
{
lvw.SubItems[i].BackColor = Color.Red;
lvw.SubItems[i].ForeColor = Color.White;
}
else {
lvw.SubItems[i].BackColor = Color.White;
lvw.SubItems[i].ForeColor = Color.Black;
}
}
}
}[![Screenshot of the result from the code above][1]][1]
- 1. cómo desactivar un artículo en mi ListView
- 2. OnFling en un ListView, Get the swiped Información del artículo
- 3. ¿Cómo ocultar una columna en un control ListView?
- 4. Cómo usar el propio valor RGB para cambiar el botón de Winform ForeColor?
- 5. Joomla: Cómo cambiar la plantilla en un artículo específico
- 6. ListView elemento animado único
- 7. ¿Cómo habilitar el soporte de diseño en un control personalizado?
- 8. control ListView EmptyDataTemplate
- 9. ¿cómo podemos cambiar el zindex de un control Silverlight programáticamente?
- 10. ¿Cómo puedo cambiar el texto de un control ToolTip existente en PictureBox en mi aplicación WinForm?
- 11. ¿Cómo puedo cambiar el nombre de un archivo en ASP.NET?
- 12. ForeColor con códigos de color
- 13. ¿Cómo obtener un ListView de un ListViewItem?
- 14. ¿Cómo vincular un ListView a múltiples colecciones almacenadas en un único ViewModel en WPF?
- 15. ¿Cómo puedo hacer sub selecciones en un elemento ya seleccionado?
- 16. Android: ¿Cómo puedo verificar un artículo en particular en un listado verificado?
- 17. Android: ListView, Último artículo - Mostrar más
- 18. ¿Cómo puedo establecer drawable a un ListView en Android
- 19. Agregar elemento al control Listview
- 20. Cambiar selección en un ListView de naranja a verde
- 21. Agregar un GridView a un ListView en Android
- 22. ¿Cómo puedo deseleccionar el elemento en ListView?
- 23. Cambiar el fondo de ListView: comportamiento extraño
- 24. ¿Cómo puedo cambiar el tamaño de un control personalizado que he construido
- 25. Ocultar columna ID en el control ListView
- 26. ¿Cómo se puede cambiar el color de la fuente de un control habilitado por tema?
- 27. ¿Cómo obtener un artículo de un niño en ExpandableListView?
- 28. Android: cómo ocultar un elemento de ListView
- 29. ¿Cómo puedo cambiar NULL a 0 cuando obtengo un valor único de una función SQL?
- 30. ExtJS: ¿Cómo ajustar el texto en un ListView con columnas?