J'ai un problème étrange avec un WinForms ComboBox amélioré que j'ai écrit en C#. La boîte affiche une liste de couleurs avec la couleur elle-même et le nom de la couleur et est définie sur ComboBoxStyle.DropDownList, double mise en mémoire tampon et DrawMode.OwnerDrawFixed. Les éléments sont dessinés lorsque l'événement DrawItem est déclenché.Comment éviter de superposer des chaînes dans un panneau déroulant personnalisé de la liste déroulante pendant le défilement?
Si j'ouvre le menu DropDown et que je défile avec la molette de la souris, le comportement et l'apparence sont corrects. Si j'utilise le pouce de la barre de défilement avec le bouton gauche de la souris, le texte dans le panneau devient tout maculé. Ce n'est que si je survole les éléments affichés à nouveau que les éléments seront redessinés correctement.
aide est très appréciée!
Michael
Edit: Code de la méthode de dessin:
private void OnDrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
{
return;
}
e.DrawBackground();
Graphics grfx = e.Graphics;
grfx.FillRectangle(mWhiteBrush, e.Bounds);
ColorInfo colorInfo = (ColorInfo)Items[e.Index];
Color brushColor = colorInfo.Color;
using (SolidBrush brush = new SolidBrush(brushColor))
{
Rectangle rectangleColor = e.Bounds;
Rectangle rectangleText = e.Bounds;
rectangleColor.Width = rectangleColor.Height;
rectangleText.X += rectangleColor.Width;
rectangleText.Width -= rectangleColor.Width;
grfx.FillRectangle(brush, rectangleColor);
grfx.DrawString(colorInfo.Name, e.Font, mBlackBrush, rectangleText);
}
}
Le code de la méthode de dessin est inséré. Oui, j'utilise le double tampon. – Mil
Ajout d'une solution rapide qui va résoudre le flou ... –
Merci beaucoup! – Mil