J'ai écrit un programme wpf C# qui traite des courbes sur un canevas. Donc je charge une courbe (une séquence de points dans un polylinesegment) et ensuite j'exécute diverses opérations dessus. Chaque courbe est mise sur l'écran par l'interaction de la souris et cela fonctionne bien. Chaque courbe vient ensuite avec un bloc de texte en son centre qui donne quelques informations. Donc, le problème vient quand je veux déplacer la forme de la souris. Je sélectionne d'abord la forme avec la souris (ça marche) et ensuite je la colle au curseur à travers l'événement OnMouseMove. Finalement, je l'ai mis sur le avec l'événement OnMouseLeftButtonDown. Donc, en bref, le OnMouseLeftButtonDown fonctionne toujours bien sauf quand je dois déplacer la forme ET l'étiquette. Dans ce cas, je dois appuyer plusieurs fois (au hasard) pour déclencher l'événement.OnLeftButtonDown tirant avec difficulté après avoir mis textblock avec canvas.set
J'ai alors recherché la partie qui cause le problème et c'est quand je déplace l'étiquette.
private void UpdateLabel(int index, PathInfo piToBeAdded)
{
plotCanvas.Children.Remove(names[index]);
TextBlock text = new TextBlock();
text.TextAlignment = TextAlignment.Left;
text.FontSize = 12;
text.Inlines.Add(new Run("(" + (GetPathsIndexFromId(piToBeAdded.ID) + 1) + ")ID:" + piToBeAdded.ID + " " + piToBeAdded.Name) { FontWeight = FontWeights.Bold });
Canvas.SetLeft(text, piToBeAdded.Center.X);<-----those cause the problem
Canvas.SetTop(text, piToBeAdded.Center.Y);<------those cause the problem
text.ReleaseMouseCapture();
names[index] = text;
plotCanvas.Children.Add(text);
}
NB: pathinfo est juste une classe stockant des informations dont les coordonnées également Plus précisément, il est juste le Canvas.SetLeft et Canvas.SetTop qui provoque la OnMouseLeftButtonDown de ne pas tirer correctement. Je les enlève de l'étiquette va dans 0,0 et l'événement Mais quel est le problème avec ces instructions? Comment puis-je faire fonctionner le OnLeftButtonDownEvent correctement?
J'espère avoir décrit le problème correctement, j'ai essayé de mettre toutes les informations connexes.
Thanx à l'avance
Patrick
Comment appellez-vous exactement cette méthode? De OnMouseLeftButtonDown lui-même? – toadflakz
Cette méthode est appelée à partir de OnMouseMove qui traite du déplacement de la forme ET de l'étiquette qui suit le curseur. Ça marche. C'est quand je le mets avec le OnMouseLeftButtonDown que cet événement ne déclenche pas. – Patrick