¿Es posible formatear un elemento ComboBox en C#? Por ejemplo, ¿cómo haré que un elemento sea negrita, cambie el color de su texto, etc.?Cambiar el formato de un elemento ComboBox
Respuesta
Usted puede hacer esto mediante el establecimiento de la DrawMode a OwnerDrawFixed
que le permite dibujar manualmente los elementos usando el evento DrawItem.
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) {
Font font = comboBox1.Font;
Brush brush = Brushes.Black;
string text = comboBox1.Items[e.Index];
if (you want bold)
font = new Font(font, FontStyle.Bold);
if (you want green)
brush = Brushes.Green;
e.Graphics.DrawString(text, font, brush, e.Bounds);
}
Sí, pero con la creación de su propia ComboBox con dibujo personalizado See here on MSDN
No, no hay una propiedad incorporada para hacerlo. Tendrás que construir tu propio control y anular el renderizado.
Tan antigua como esta publicación es, me pareció útil como punto de partida para buscar pero terminé teniendo mejores resultados utilizando el método que se muestra here por @Paul.
Aquí está el código que solía hacer condicionalmente los elementos en un cuadro combinado aparecen en negrita, creo que la respuesta correcta para esta pregunta tiene un comportamiento extraño: al pasar el ratón sobre un elemento va un poco más audaz y se mantiene así si se vuelve a dibujar. Este código da como resultado un aspecto más natural:
private void ComboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
return;
ComboBox combo = ((ComboBox)sender);
using (SolidBrush brush = new SolidBrush(e.ForeColor))
{
Font font = e.Font;
if (/*Condition Specifying That Text Must Be Bold*/)
font = new System.Drawing.Font(font, FontStyle.Bold);
e.DrawBackground();
e.Graphics.DrawString(combo.Items[e.Index].ToString(), font, brush, e.Bounds);
e.DrawFocusRectangle();
}
}
sólo para añadir a la respuesta suministrada por Dan, no se olvide que si usted ha atado la lista a un origen de datos, en lugar de sólo tener un cuadro combinado con las cadenas de civil , no podrá volver a dibujar la entrada utilizando combo.Items[e.Index].ToString()
.
Si, por ejemplo, ha vinculado el ComboBox a una DataTable y trata de usar el código en la respuesta de Dan, terminará con un ComboBox que contiene System.Data.DataRowView
, ya que cada elemento de la lista no es cadena, es un DataRowView.
El código en este caso sería algo así como lo siguiente:
private void ComboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
return;
ComboBox combo = ((ComboBox)sender);
using (SolidBrush brush = new SolidBrush(e.ForeColor))
{
Font font = e.Font;
DataRowView item = (DataRowView)combo.Items[e.Index];
if (/*Condition Specifying That Text Must Be Bold*/) {
font = new System.Drawing.Font(font, FontStyle.Bold);
}
else {
font = new System.Drawing.Font(font, FontStyle.Regular);
}
e.DrawBackground();
e.Graphics.DrawString(item.Row.Field<String>("DisplayMember"), font, brush, e.Bounds);
e.DrawFocusRectangle();
}
}
Dónde "DisplayMember"
es el nombre del campo que se mostrará en la lista (establecido en la propiedad ComboBox1.DisplayMember
).
- 1. elemento en ComboBox WPF
- 2. ¿Cómo cambio el texto de un elemento ComboBox?
- 3. Odd ComboBox comportamiento al cambiar el tamaño
- 4. Establecer el elemento seleccionado de ComboBox resaltar color
- 5. WPF ComboBox SelectedItem - cambiar al valor anterior
- 6. En Perl, ¿cómo puedo cambiar un elemento en un archivo XML sin cambiar el formato del archivo XML?
- 7. WPF Encuadernación Colección a ComboBox y Selección de un elemento
- 8. Cómo cambiar el estilo de ComboBox de celda en DataGridViewComboBoxColumn
- 9. Cambiar el formato de sangrado de vim
- 10. ComboBox WPF con el cuadro de texto editable como un elemento
- 11. Excel VBA: Guardar como activa el evento Cambiar en ComboBox
- 12. ¿Cómo cambiar un elemento establecido?
- 13. ¿Cómo cambiar el formato de un panel facet_wrap individual?
- 14. ¿Se comete un error al cambiar el formato de origen?
- 15. cambiar el formato de fecha en php
- 16. cambiar el formato de fecha en JSF
- 17. Establecer programáticamente el elemento seleccionado ComboBox en WPF (3.5sp1)
- 18. ComboBox con el artículo vacío?
- 19. ¿Cómo mantengo el formato de RichText (negrita/cursiva/etc.) al cambiar cualquier elemento?
- 20. cambiar el espacio de nombres de un elemento con XSLT
- 21. Cambiar el tipo de un elemento de entrada usando jquery
- 22. Llenar un ComboBox con C#
- 23. ComboBox de WPF de datos con 'Nuevo ...' elemento
- 24. cómo cambiar el formato del cronómetro?
- 25. Cambiar el tamaño de un elemento HTML con toques
- 26. Cambiar el ID de un elemento con jQuery
- 27. ¿Cómo cambiar el texto de un elemento span en JavaScript
- 28. ¿Puedo cambiar el ID de un elemento HTML utilizando Javascript?
- 29. Flex 3.5.0; Actualice la lista de visualización de ComboBox al cambiar el proveedor de datos
- 30. ¿Cómo se puede separar el elemento seleccionado de dos combobox con un solo DataSource?