Estoy tratando de dibujar elementos que terminan con un carácter *
en rojo (y eliminar ese carácter *
) y dibujar otros elementos en color negro.Listbox manual DrawItem tamaño de fuente grande
este es mi código:
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground() ; //Draw our regular background
if (Microsoft.VisualBasic.Strings.Right(listBox1.Items[e.Index].ToString(), 1) == "*")
{
e.Graphics.DrawString(Microsoft.VisualBasic.Strings.Mid(listBox1.Items[e.Index].ToString(),1,listBox1.Items[e.Index].ToString().Length - 1), e.Font, Brushes.Red, e.Bounds); //Draw the item text in red!
}
else
{
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, Brushes.Black, e.Bounds); //Draw the item text in its regular color
}
}
también DrawMode
propiedad del cuadro de lista se establece en OwnerDrawVariable
.
Mi código funciona bien cuando la fuente de listbox es la fuente predeterminada.
Pero cuando cambio el tamaño de fuente de 8.25 (tamaño predeterminado) a 14, la mitad del texto se dibuja en el cuadro de lista. como este:
Pero con el tamaño de fuente predeterminado, todo es correcto.
¿Cuál es el problema?
he utilizado 'e.ItemHeight = listBox1.Font.Height;' y funciona bien. ¡Gracias! –
Excelente, actualizaré mi respuesta con su comentario para que no dependa de una clase adicional personalizada 'ListBoxFontItem'. –