2010-07-22 11 views
1

J'utilise un événement DrawItem et MeasureItem pour peindre une zone de liste déroulante avec un DrawMode de OwnerDrawVariable. Fondamentalement, j'essaie d'avoir l'utilisateur en surbrillance une sélection avec la souris, puis appuyez sur la barre d'espace pour basculer l'état de sauvegarde d'une liste de chansons. Puis j'appelle l'événement Me.Refresh() pour le formulaire dans une tentative de redessiner le formulaire et le ComboBox. Le problème que je rencontre est que seul le Combobox lui-même (pas la zone déroulante) qui est un contrôle sur le formulaire principal est en train de redessiner, et le texte qui se trouve derrière la sélection en surbrillance de la goutte La liste déroulante ne change pas du rouge au noir comme je le crois. Si je déplace la souris vers une autre sélection, la couleur est en fait mise à jour.VB.NET ComboBox - Nécessité de forcer un redessin lorsqu'une touche est enfoncée lors de la descente

Voici un extrait du code.

If (e.KeyCode = Keys.Space) Then 
     If cmbList.SelectedItem IsNot Nothing Then 
      With DirectCast(cmbList.SelectedItem, SongTitle) 
       .bSave = Not .bSave 
      End With 
     End If 
    End If 

    e.Handled = True 

    Me.Refresh() 

Merci pour toute aide que vous pouvez fournir.

+0

Comment ça marche? Utilisez-vous l'événement DrawItem? –

+0

Hans, j'ai mis à jour l'article principal pour expliquer, je l'espère, un peu plus. Merci d'avoir regardé! – Darkn3ss

Répondre