2010-08-09 10 views
2

J'utilise un ancien contrôle ActiveX dans mon application C# Win. il a un événement MouseUp que son eventArgs passe le X et Y du point que nous avons cliqué mais pour mon scénario j'utilise son événement ItemClick et son eventArgs n'a pas l'information sur X et Y. mais je dois Je les connais pour montrer ma fenêtre ... donc est-il possible de trouver l'emplacement de X et Y sur lequel l'utilisateur a cliqué avec le bouton droit pour que je puisse le transmettre à ma méthode contextMenuStrip.Show.Obtenir le point de clic sur un contrôle

Merci

+2

Cela pourrait aussi aider à la référence: http://stackoverflow.com/questions/1316681/getting-mouse-position-in-c – mint

Répondre

5

La classe de contrôle a une propriété en lecture seule statique MousePosition, cela donne coordonnées de la souris sur l'écran. Vous pouvez utiliser ceci pour savoir où positionner le ContextMenu.

De MSDN:

Control.MousePosition Propriété

Type: System.Drawing.Point

Un point qui contient les coordonnées du curseur souris par rapport à la partie supérieure gauche coin de l'écran.

5

Cursor.Position vous obtiendrez les coordonnées d'écran actuelles du curseur. Pour la plupart des utilisations, cela est suffisant, même si la souris peut potentiellement se déplacer entre le clic et le gestionnaire appelé.

+0

merci corvuscorax, à la fois votre réponse et fletcher's travaillé pour moi. J'ai marqué son comme "réponse" juste parce qu'il a été posté plus tôt. – Bohn

+0

+1 Les deux solutions renvoient les coordonnées de la souris. Il serait faux de ne pas upvote – fletcher

4

Vous devez obtenir la position du curseur qui obtient la position de l'écran, puis appeler pointToClient depuis le contrôle pour obtenir le point correspondant au contrôle. Alias. 0,0 est le coin supérieur gauche du contrôle.

this.PointToClient(Cursor.Position); 

+1 aux autres réponses pour m'avoir conduit dans la bonne direction.