Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

ListBox color

Îåêßíçóå áðü ôï ìÝëïò tommaσ. Τελευταία δημοσίευση από το μέλος SValsamis στις 23-05-2006, 17:44. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  22-05-2006, 22:48 13124

    ListBox color

    hi!

      Θα ήθελα να φτιάξω ένα listbox που έχει στο text ονόματα από χρώματα(οπώς το χρώμα γραμματοσειράς όταν κάνεις edit  τη Δημοσίευση νέου μηνύματος) δηλαδή όχι μόνο το όνομα αλλά και το χρώμα
  •  23-05-2006, 17:44 13194 σε απάντηση της 13124

    Απ: ListBox color

    Για να μπορείς να αλλάξεις το χρώμα των items του listbox πρέπει να αλλάξεις το property Drawmode σε OwnerDrawFixed
    και να κάνεις το δικό σου Drawitem στο αντίστοιχο event.

    ΠΧ

    'Αυτό το event ενεργοποιείται κάθε φορά που ζωγραφίζεται ένα item       
    Private
    Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem

             'Παίρνουμε το Rectangle του Item που ζωγραφίζεται       
             Dim
    StringBounds As RectangleF = New RectangleF(e.Bounds.Left, e.Bounds.Top, e.Bounds.Width, e.Bounds.Height)

             'Ελέγχουμε αν είναι Selected ή όχι για να βάλουμε τα αντίστοιχα χρώματα
             If e.Index = sender.SelectedIndex
    Then
                
    e.Graphics.FillRectangle(System.Drawing.SystemBrushes.Highlight, e.Bounds)
                e.Graphics.DrawString(sender.Items(e.Index).ToString, sender.Font, System.Drawing.SystemBrushes.HighlightText, StringBounds)

             Else
                e.Graphics.FillRectangle(New SolidBrush(CType(ListBox1.Items(e.Index), Color)), e.Bounds)
                e.Graphics.DrawString(sender.Items(e.Index).ToString, sender.Font, System.Drawing.SystemBrushes.WindowText, StringBounds)

            End If

    Εnd Sub

    'Στο MouseDown επιλέγουμε το σωστό Selectedindex       
    Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
                
    Dim lbSender As ListBox = sender
                
    Dim lastSelectedBounds As Rectangle = lbSender.GetItemRectangle(lbSender.SelectedIndex)  'To προηγούμενο      
                
    Dim Selectedindex As Integer = lbSender.IndexFromPoint(e.X, e.Y) 'Το τρέχον
                
    ListBox1.SelectedIndex = Selectedindex 'Αλλάζουμε το SelectedIndex
                
    ListBox1.Invalidate() 'και ξανακάνουμε redraw το ListBox

    End Sub

    'Το ίδιο και στο KeyDown
    Private
    Sub ListBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyDown
               
    Dim selectedindex As Integer = ListBox1.SelectedIndex 'Το παλιό
                
    Dim lastSelectedBounds As Rectangle = ListBox1.GetItemRectangle(selectedindex)
                
    Select Case e.KeyCode
                         
    Case Keys.Up 'πάνω
                                  
    If selectedindex > 0 Then
                                        
    selectedindex -= 1
                                        
    ListBox1.SelectedIndex = selectedindex 'Αλλάζουμε το SelectedIndex
                                        
    ListBox1.Invalidate() 'και ξανακάνουμε redraw το ListBox
                                  End If

                         Case Keys.Down 'Κάτω
                                 
    If selectedindex + 1 < ListBox1.Items.Count Then
                                     
    selectedindex += 1
                                     
    ListBox1.SelectedIndex = selectedindex
                                     
    ListBox1.Invalidate()
                               End If

                End Select

    End Sub

    Για να φορτώσουμε τα χρώματα στο ListBox

    Sub LoadColors()
          
    ListBox1.Items.Add(System.Drawing.Color.Red)
          ListBox1.Items.Add(System.Drawing.Color.Green)
          ListBox1.Items.Add(System.Drawing.Color.Blue)
          ListBox1.Items.Add(System.Drawing.Color.Yellow)
          '.....

    End Sub

    Καλή επιτυχία !!!!!


    Σταύρος Βαλσάμης
    Προγραμματιστής
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems