2010-04-09 3 views
1

J'ai commencé à remarquer un comportement étrange lors de la navigation dans la barre d'outils principale de mon application Winforms, et je ne sais pas comment la réparer. Quand j'ouvre d'abord le menu déroulant du menu Fichier, il ressemble à ceci:Comment réparer le comportement bizarre de défilement/alignement lors de l'utilisation du clavier dans MenuStrip?

normal

Je commence à faire défiler chaque élément avec les touches fléchées, et tout va bien jusqu'à atteindre « Exit ». Dès que je frappe la flèche vers le bas de « Log Off », ou si je frappe la touche flèche de « Ouvrir », le menu se réorganise pour ressembler à ceci:

alt text

Je suis perplexe par ce comportement. Le menu fonctionne toujours, et de ce point, si je commence à défiler vers le haut, je peux obtenir l'accord de retour à la normale:

alt text

Quelques observations:

  • Le menu fonctionne toujours.
  • Cela ne se produit pas lorsque vous utilisez la souris.
  • J'ai un peu de code qui bascule la propriété Visible de certains éléments de menu. J'ai été capable de modifier l'arrangement en jouant avec ça, mais c'était encore foiré.

Quelqu'un peut-il m'aider à comprendre ce qui se passe et comment y remédier?

Répondre

2

J'ai trouvé la source de ce problème. C'est un known bug que Microsoft n'a apparemment pas l'intention de réparer. Le problème se produit lorsque vous essayez de basculer visibilité/disponibilité des éléments de menu pendant l'exécution. Microsoft nous rappelle que "ce problème est purement visuel, il n'y a pas de perte de fonctionnalité".

Leur solution de contournement suggérée consiste à ajouter/supprimer les menuitems plutôt que de les afficher/masquer.

Un autre workaround est suggéré sur les forums: dérivé de ToolStripDropDownMenu, désactivant AutoSize, le manipulant seul, et ajoutant 1 pixel de hauteur supplémentaire.

J'ai trouvé un blog post qui a résolu ce problème, mais l'auteur n'a jamais eu l'occasion de publier sa solution. Il fait cependant un point utile concernant Visible vs Available.

Questions connexes