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

CAmbiar color lineas listbox

Estas en el tema de CAmbiar color lineas listbox en el foro de .NET en Foros del Web. Como puedo poner con distintos colores la distintas lineas de un listbox o no se puede?? pq he visto el ejemplo que poneis ahi y ...
  #1 (permalink)  
Antiguo 10/01/2006, 13:12
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años
Puntos: 1
CAmbiar color lineas listbox

Como puedo poner con distintos colores la distintas lineas de un listbox o no se puede?? pq he visto el ejemplo que poneis ahi y es un listview

venga un saludo
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros
  #2 (permalink)  
Antiguo 12/01/2006, 03:38
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
http://www.forosdelweb.com/showthrea...light=listview
http://desaweb.forosdelweb.com/showthread.php?t=361464
  #3 (permalink)  
Antiguo 13/07/2009, 19:20
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Respuesta: CAmbiar color lineas listbox

Bueno es muy sencillo, si te refieres a HTML lo que tienes que hacer es uso de los stylos de objeto... como style... un ejemplo

<select name="lista">
<option value="" style="background-color:#900">Option 1</option>
<option value="" style="background-color:#303">Option 2</option>
<option value="" style="background-color:#9C0">Option 3</option>
</select>

si manejas algun lenguaje de lado del servidor o un xslt pues puedes generar option diferentes en los que puedes sortear los colores dentro del style. y es asi como en mi casa deshablito optiones o manejo en rojo los articulos que tengo descalificados o descontinuados. para asi no tomarlos en cuanto.

bueno espero y te funcione saludos..
  #4 (permalink)  
Antiguo 13/07/2009, 20:11
Avatar de maycol_alvarez  
Fecha de Ingreso: julio-2009
Mensajes: 31
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: CAmbiar color lineas listbox

Yo lo hice heredando la clase listbox, sobrescribiendo los métodos de dibujo del ítem: onmeasureitem, ondrawitem, todo muy complejo porque mi objetivo fue colocar imágenes y efectos, pero debe de haber otra solución más simple, esta es parte del código, son 1000 lineas más:

Código:
protected override void OnDrawItem(System.Windows.Forms.DrawItemEventArgs e)
		{
			base.OnDrawItem(e);
			//((pr1.Form1)this.FindForm()).listBox1.Items.Insert(0,e.State.ToString() + " " + e.Index);
			System.Drawing.Rectangle r;
			System.Drawing.Brush bro=null;
			System.Drawing.Brush brot=null;
			ComboBoxItem it = null;
//			System.Diagnostics.Debug.WriteLine(e.State );
			if (Contains(e.State,System.Windows.Forms.DrawItemState.Selected)) 
			{
				bro = new System.Drawing.SolidBrush(_lc);
				brot = new System.Drawing.SolidBrush(_ltc);
			}
			else
			{
				bro = new System.Drawing.SolidBrush(base.BackColor);
				brot = new System.Drawing.SolidBrush(e.ForeColor);
			}
			if (e.Index != -1)
			{
				if (_pot)
				{
					r = new System.Drawing.Rectangle(e.Bounds.X+19,e.Bounds.Y,e.Bounds.Width,e.Bounds.Height);
				}
				else
				{
					r = e.Bounds;
				}
				if (this.Items[e.Index] is ComboBoxItem)
				{
					it = ((ComboBoxItem)this.Items[e.Index]);
					//if (Contains(e.State,System.Windows.Forms.DrawItemState.ComboBoxEdit))//{//	e.Graphics.FillRectangle(bro,e.Bounds);//}
					it.DrawBack(bro,r,e);
					if (_pot)
					{
						it.DrawImage(e,new System.Drawing.Rectangle(e.Bounds.X+1,e.Bounds.Y+1,16,16),false,base.BackColor,this);
					}
					else
					{
						it.DrawImage(e,new System.Drawing.Rectangle(e.Bounds.X+1,e.Bounds.Y+1,16,16),Contains(e.State,System.Windows.Forms.DrawItemState.Selected),base.BackColor,this);
					}
					if (it.TextDraw) {it.DrawText(it.ToString(),brot,new System.Drawing.Rectangle(e.Bounds.X + 18,e.Bounds.Y + 2,e.Bounds.Width - 18,e.Bounds.Height -1),e);}
				}
				else
				{
					e.Graphics.FillRectangle(bro,e.Bounds);
					e.Graphics.DrawString(this.Items[e.Index].ToString(),e.Font,brot,e.Bounds);
				}
			}
			else
			{
				e.Graphics.FillRectangle(bro,e.Bounds);
			}
			if (bro != null) {bro.Dispose();}
			if (brot != null) {brot.Dispose();}
			it = null;
		}

Última edición por maycol_alvarez; 13/07/2009 a las 20:20
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:12.