Foros del Web » Programación para mayores de 30 ;) » .NET »

c# mostrar items de un listbox con una parte en negrita y otra normal

Estas en el tema de c# mostrar items de un listbox con una parte en negrita y otra normal en el foro de .NET en Foros del Web. 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" ... ...
  #1 (permalink)  
Antiguo 01/03/2012, 07:20
 
Fecha de Ingreso: diciembre-2009
Mensajes: 52
Antigüedad: 14 años, 4 meses
Puntos: 0
c# mostrar items de un listbox con una parte en negrita y otra normal

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.

Etiquetas: items, listbox, negrita, net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:03.