Bonjour à tous,

voilà je rencontre actuellement un problème lorsque je souhaites réaliser l'override de la fonction OwnerDraw pour une combobox...

Le DrawMode de la combobox est fixé à OwnerDrawFixed.


Voici la fonction d'override :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
private void comboBoxActivites_DrawItem(object sender, DrawItemEventArgs e)
        {
            Graphics g = e.Graphics;
 
            DisplayActivite act = (DisplayActivite)(comboBoxActivites.Items[e.Index]);
            if (!act.Selectionnable)
            {
                g.DrawString(act.DisplayName, Font, new SolidBrush(Color.Red), e.Bounds);
            }
            else
            {
                e.DrawBackground();
                g.DrawString(act.DisplayName, Font, new SolidBrush(ForeColor), e.Bounds);
            }
        }
Mon problème est le suivant :

Lorsque je parcourt le dropdown en sélectionnant l'ascenseur et e le faisant monter ou descendre pour parcourir la liste, j'ai ce bug d'affichage (voir image en pièce jointe) :

Par contre, si je la parcours avec la roulette, ou en cliquant dans la scrolling bar ou encore en cliquant sur le bouton monter ou descendre, je n'ai aucun problème, ca n'apparait uniquement qu'en faisant monter ou descendre l'ascenseur avec la souris ...

J'ai essayer plusieurs chose :
- doublebuffering de la combobox
- invalider la combobox afin qu'elle se redessine

Mais rien n'y fait ...

Le seul moyen pour que cela ne se produise pas, c'est de modifier le mode de compatibilité de l'application pour Désactiver la composition du bureau, mais cela ne m'arrange pas du tout car cela désactive l'Aero de la machine pendant l'éxecution du programme.

Avez vous déjà été confronté à ce problème ?

Merci d'avance.