Hola,
tengo un listbox en el cuál me gustaría que sus elementos se mostraran de la manera siguiente:
"Item1: descripcion_item1"
"Item2: descripcion_item2"
...
"ItemN: descripcion_itemN"
Por ejemplo:
"Jesús: Portero"
"Manuel: Defensor"
"Pablo: Atacante"
Conseguí, mediante el enlace que adjunto a continuación, que cada elemento de la lista fuera de distinto formato, pero no que un mismo item combinara dos formatos distintos:
http://www.thescarms.com/dotnet/CustomListBox.aspx
Probé de modificar la posición X de la segunda parte del texto pero no es una buena solución:
// obtengo texto del item
string item = ((ListBox)sender).Items[e.Index].ToString();
// obtengo la posicion donde cambia el formato
int a = item.IndexOf(':');
// obtengo la parte1 en negrita i la parte 2 sin negrita
string part1 = item.Substring(0, a - 1);
string part2 = item.Substring(a, item.Length - a);
// obtengo el rectangulo que corresponde al item de la lista
Rectangle r = e.Bounds;
// incremento la posicion X para escribir el segundo elemento seguido del primero
// teniendo en cuenta cuantas letras tiene y un factor probado a ojo (7)
r.X = r.X + 7*a;
// escribo la primera parte de texto en negrita
e.Graphics.DrawString(part1, new Font(e.Font, FontStyle.Bold), Brushes.Black, e.Bounds, StringFormat.GenericDefault);
// escribo la segunda parte sin negrita
e.Graphics.DrawString(part2, e.Font, Brushes.Black, r, StringFormat.GenericDefault);
Sino incremento la posicion X para la segunda porción de texto me lo escribe justo encima de la primera porción.
¿Se os ocurre alguna manera?
Muchas Gracias.