elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C#] Cambiar color de un item [NO seleccionado] en un ListBox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#] Cambiar color de un item [NO seleccionado] en un ListBox  (Leído 6,613 veces)
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.703


WOS & Khan & Calero LDN


Ver Perfil WWW
[C#] Cambiar color de un item [NO seleccionado] en un ListBox
« en: 13 Septiembre 2013, 23:47 »

Lo necesito con el fin de identificar algunos items dentro del ListBox!

Estuve mirando y que carajos, estoy muy oxidado en C#  :-\, como se haría?


« Última modificación: 13 Septiembre 2013, 23:49 por Alex Jurado » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: [C#] Cambiar color de un item [NO seleccionado] en un ListBox
« Respuesta #1 en: 14 Septiembre 2013, 02:35 »

If NOT


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: [C#] Cambiar color de un item [NO seleccionado] en un ListBox
« Respuesta #2 en: 14 Septiembre 2013, 05:32 »

Básicamente es lo que te ha comentado $Edu$, hacer la comparación inversa de como lo estés haciendo, pero un ListBox no contiene atributos para modificar lo que requieres. Sólamente puedes modificar el color de fondo dibujando manuálmente los items, y si encima quieres extender la funcionalidad para colorear ciertos Items eso requiere un poco más de código.

Yo te recomiendo que te olvides del ListBox y utilices un ListView, ya que se puede asemejar bastante a un ListBox si lo configuras corréctamente, y además puedes modificar el color de los item(s) que quieras sin necesidad de handlear los eventos de dibujo:





Código
  1.    Dim Random_Color As New Random ' No es necesario, pero lo usaré en este ejemplo para colorear de forma aleatoria.
  2.  
  3.    Private Sub Test() ' Handles MyBase.Load
  4.  
  5.        ' Selecciono la vista "Detalles"
  6.        ListView1.View = View.Details
  7.  
  8.        ' Agrego una columna
  9.        ListView1.Columns.Add("Items:")
  10.  
  11.        ' Agrego unos cuantos items
  12.        ListView1.Items.AddRange("A B C D E F".Split().Select(Function(x) New ListViewItem(x)).ToArray)
  13.  
  14.        ' Coloreo cada item de forma aleatoria:
  15.        For Each Item As ListViewItem In ListView1.Items
  16.            Item.BackColor = Color.FromArgb(Random_Color.Next(1, 999999999))
  17.        Next
  18.  
  19.    End Sub


Código:
Item.BackColor = Color

Así de facil.






Pero bueno, si prefieres hacerlo con un ListBox, aquí te muestro un ejemplo que hice en VB.NET:





Código
  1.    Public Class Form1
  2.  
  3.    ' Para seleccionar de forma rápida los items que quiero colorear
  4.    Private Enum Colorize_ListBox_Items As Short
  5.        Selected = 0
  6.        Non_Selected = 1
  7.        All = 2
  8.        None = 3
  9.    End Enum
  10.  
  11.    ' Aquí almaceno el color que usaré.
  12.    Dim ListBox_Color As Brush
  13.  
  14.    Private Sub Test() Handles MyBase.Shown
  15.  
  16.        ' Añado unos cuantos Items
  17.        ListBox1.Items.AddRange("A B C D E".Split())
  18.  
  19.        ' Selecciono un item
  20.        ListBox1.SelectedIndex = (ListBox1.Items.Count \ 2)
  21.  
  22.        ' Seteo el modo de dibujo manual
  23.        ListBox1.DrawMode = DrawMode.OwnerDrawFixed
  24.  
  25.        ' Coloreo el item seleccionado
  26.        Colorize_Item(ListBox1, Colorize_ListBox_Items.Selected, Brushes.YellowGreen)
  27.  
  28.        ' ...O coloreo los items NO seleccionados
  29.        Colorize_Item(ListBox1, Colorize_ListBox_Items.Non_Selected, Brushes.Red)
  30.  
  31.        ' ...O coloreo todos los items
  32.        Colorize_Item(ListBox1, Colorize_ListBox_Items.Non_Selected, Brushes.Yellow)
  33.  
  34.        ' ...O no coloreo ningun item
  35.        Colorize_Item(ListBox1, Colorize_ListBox_Items.None, Nothing)
  36.  
  37.        ' ...O coloreo algunos Items específicos
  38.        Colorize_Item(ListBox1, {0, (ListBox1.Items.Count \ 2), (ListBox1.Items.Count - 1)}, Brushes.HotPink)
  39.  
  40.    End Sub
  41.  
  42.    Private Sub Colorize_Item(ByVal ListBox As ListBox, _
  43.                              ByVal Items As Colorize_ListBox_Items, _
  44.                              ByVal Brush_Color As Brush)
  45.  
  46.        ' En la propiedad "Tag" almaceno el valor de la enumeración.
  47.        ListBox.Tag = Items.ToString
  48.  
  49.        ' Almaceno el color
  50.        ListBox_Color = Brush_Color
  51.  
  52.        ListBox.Invalidate() ' Refresco los cambios
  53.  
  54.    End Sub
  55.  
  56.    Private Sub Colorize_Item(ByVal ListBox As ListBox, _
  57.                              ByVal Items As Integer(), _
  58.                              ByVal Brush_Color As Brush)
  59.  
  60.        ' En la propiedad "Tag" almaceno los índices de los items.
  61.        ListBox.Tag = String.Join(ChrW(Keys.Space), Items)
  62.  
  63.        ' Almaceno el color
  64.        ListBox_Color = Brush_Color
  65.  
  66.        ListBox.Invalidate() ' Refresco los cambios
  67.  
  68.    End Sub
  69.  
  70.    Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs) _
  71.    Handles ListBox1.DrawItem
  72.  
  73.        e.DrawBackground()
  74.  
  75.        Select Case sender.tag
  76.  
  77.            Case Colorize_ListBox_Items.Selected.ToString ' Colorize Selected Items
  78.  
  79.                If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
  80.                    e.Graphics.FillRectangle(ListBox_Color, e.Bounds)
  81.                End If
  82.  
  83.            Case Colorize_ListBox_Items.Non_Selected.ToString ' Colorize Non-Selected Items
  84.  
  85.                If (e.State And DrawItemState.Selected) = DrawItemState.None Then
  86.                    e.Graphics.FillRectangle(ListBox_Color, e.Bounds)
  87.                End If
  88.  
  89.            Case Colorize_ListBox_Items.All.ToString ' Colorize all
  90.  
  91.                e.Graphics.FillRectangle(ListBox_Color, e.Bounds)
  92.  
  93.            Case Colorize_ListBox_Items.None.ToString ' Colorize none
  94.  
  95.                Dim DefaultColor As SolidBrush = New SolidBrush(ListBox.DefaultBackColor)
  96.                e.Graphics.FillRectangle(DefaultColor, e.Bounds)
  97.                DefaultColor.Dispose()
  98.  
  99.            Case Else ' Colorize at specific index
  100.  
  101.                If Not String.IsNullOrEmpty(sender.tag) _
  102.                AndAlso sender.tag.ToString.Split.Contains(e.Index.ToString) Then
  103.  
  104.                    e.Graphics.FillRectangle(ListBox_Color, e.Bounds)
  105.  
  106.                End If
  107.  
  108.        End Select
  109.  
  110.        Using b As New SolidBrush(e.ForeColor)
  111.            e.Graphics.DrawString(ListBox1.GetItemText(ListBox1.Items(e.Index)), e.Font, b, e.Bounds)
  112.        End Using
  113.  
  114.        e.DrawFocusRectangle()
  115.  
  116.    End Sub
  117.  
  118. End Class


Ahora es tu trabajo intentar traducirlo a C# (Hay cnvertidores online), o esperar la respuesta de NovLucker o alguno de los grandes de C#.


Saludos!
« Última modificación: 14 Septiembre 2013, 05:39 por EleKtro H@cker » En línea


Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.703


WOS & Khan & Calero LDN


Ver Perfil WWW
Re: [C#] Cambiar color de un item [NO seleccionado] en un ListBox
« Respuesta #3 en: 16 Septiembre 2013, 08:16 »

Oka entiendo, intentaré con el ListView era mi otra opción :p
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines