2013-04-10 9 views
5

voglio cambiare il colore della voce che contiene una stringa specificaCambiare il colore di punto specifico all'ordine listbox che contiene una stringa specifica sulla DrawItem

Private Sub ListBox2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox2.DrawItem 
    e.DrawBackground() 
    If DrawItemState.Selected.ToString.Contains("specific string") Then 
     e.Graphics.FillRectangle(Brushes.LightGreen, e.Bounds) 
    End If 

    e.DrawFocusRectangle() 

che è il mio codice ma non funziona

+1

Spiegare "non funziona" più chiaramente. Abbiamo bisogno di una descrizione più "spesifica" di ciò che è sbagliato. Accade qualcosa di diverso? In caso contrario, hai inserito un punto di interruzione o una dichiarazione di registrazione per assicurarti che l'evento venga attivato? –

+1

Avete impostato la proprietà 'DrawMode' su' DrawMode.OwnerDrawFixed' o 'DrawMode.OwnerDrawVariable'? – Steve

risposta

9

Va bene, per prima cosa è necessario impostare la proprietà DrawMode della casella di riepilogo su "OwnerDrawFixed" anziché Normal. Altrimenti non si attiverà mai l'evento DrawItem. Quando ciò è fatto, è tutto abbastanza semplice.

Private Sub ListBox1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem 
    e.DrawBackground() 

    If ListBox1.Items(e.Index).ToString() = "herp" Then 

     e.Graphics.FillRectangle(Brushes.LightGreen, e.Bounds) 
    End If 
    e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), e.Font, Brushes.Black, New System.Drawing.PointF(e.Bounds.X, e.Bounds.Y)) 
    e.DrawFocusRectangle() 
End Sub 

Si dovrà toccare questo con colori diversi, se selezionata. Ma questo dovrebbe essere sufficiente per continuare a lavorare. Eri vicino, tienilo a mente. :)

+0

+1. Appena provato - funziona. – Neolisk

+0

se la mia condizione è dinamica, come posso farlo ... significa passare il ListBox1.Items [e.index] .tostring() al mio db e voglio controllare se il valore restituito è nullo il colore cambia in nero altrimenti rosso. – user3217843

+0

Basta modificare l'istruzione if per verificare IsDbNull o Is Nothing sul valore restituito – WozzeC

Problemi correlati