2009-02-05 3 views
1

J'ajoute dynamiquement un libellé à un formulaire, puis ajoute dynamiquement un contrôle ContextMenuStrip. Que j'utilise la propriété label.ContextMenuStrip pour les connecter, ou que j'ajoute manuellement le gestionnaire d'événements pour qu'il réponde au clic droit et affiche le menu contextuel, j'obtiens un comportement étrange:ComtextMenuStrip Behavior Problème

1) Le menu ne n'apparaît pas à côté du pointeur de la souris, il est décalé vers le bas et vers la droite. Il semble qu'il soit lié à la position de l'étiquette dans son contrôle parent (un contrôle d'image), plutôt que le formulaire.

2) Le menu ne disparaît pas lorsque je clique sur autre chose que le menu.

Des idées que je manque ici?

Merci, Andy

+1

Pouvez-vous poster le code de la façon dont vous affichez le ContextMenu. La méthode ShowContextMenu a quelques surcharges, et il se peut que vous n'utilisiez que la mauvaise. – BFree

Répondre

1

ça a marché. Tout d'abord, j'ajoutais le contrôle à la collection de contrôle d'étiquette, en le changeant à la collection de formulaire corrigé le problème de positionnement. Je n'ai jamais compris pourquoi le menu ne fermait pas.

Finalement, j'ai restructuré les choses en ajoutant une instance statique du menu au formulaire, puis j'ai simplement connecté la propriété label.ContextMenuStrip à cette instance stastic. Tout va bien avec cette approche. J'ai utilisé la balise du contrôle d'étiquette pour l'identifier au gestionnaire d'événement click.