2010-05-20 5 views
2

J'ai un problème que je ne peux pas résoudre.CF - Comment obtenir la position de la souris lorsque ContextMenu apparaît?

À mon avis (qui montre une carte) i créé un contextMenu. Lorsque le menu contextuel est invoqué que je dois obtenir la position où l'utilisateur a cliqué sur la carte.

Voici mon problème:

De l'avis que je possède déjà une onMouseDown qui me reçoit les coordonnées où l'utilisateur clique dessus.

private void MapView_MouseDown(object sender, MouseEventArgs e) 
    { 
     this.lastMouseDownX = e.X; 
     this.lastMouseDownY = e.Y; 
    } 

Lorsque le contextMenu est invoqué i besoin les mêmes données, mais le problème est que contextMenu a seulement EventArgs que DonT conserver les données dont j'ai besoin. De plus ... contextMenu est invoqué lorsque l'utilisateur appuie et maintient la souris pendant une seconde et quand il est invoqué, le code n'entre pas dans l'événement onMouseDown! Il va juste dans l'événement pop-up sur mon menu contextuel ....

J'ai essayé de mettre cela dans mon événement pop-up, mais les coordonnées ne sont pas ok. La coordonnée Y est loin du graphique.

private void servicesContextMenu_Popup(object sender, EventArgs e) 
{ 
    this.lastMouseDownX = Control.MousePosition.X; 
    this.lastMouseDownX = Control.MousePosition.Y; 
} 

Aide?

+0

J'ai calculé la différence. Dans Control.MousePosition.Y, la valeur est toujours 26px plus grande que la coordonnée Y actuelle. Coordonner X a toujours raison! Est-ce que cela a quelque chose à faire avec la barre de titre? – no9

Répondre

Questions connexes