Je dois déplacer plusieurs zones de texte avec un curseur de souris. J'ai décidé de faire comme ça. Si vous cliquez sur une zone de texte (et que vous appuyez sur le bouton Contrôle), une zone de texte est ajoutée à la liste des éléments sélectionnés. Ensuite, quand le bouton est encore pressé et que la souris bouge, je fais une opération de déplacement des contrôles. Cependant, mon code ne fonctionne pas bien. Les boîtes de texte sont en mouvement mais très très rapidement. Voici mon codedéplacement de plusieurs contrôles
List<TextBox> items;
private void txtBox_PreviewMouseDown(object sender, RoutedEventArgs e)
{
isClicked = true;
startPoint = Mouse.GetPosition( (sender as TextBox).Parent);
items = CurrentSelection;
}
private void txtBox_PreviewMouseMove(object sender, RoutedEventArgs e)
{
Point mousePos = Mouse.GetPosition(parentCanvas);
if (isClicked)
{
foreach (TextBox item in items)
{
double left = Canvas.GetLeft(item);
double top = Canvas.GetTop(item);
Canvas.SetLeft(item, left + (startPoint.X - mousePos.X));
Canvas.SetTop(item, top + (startPoint.Y - mousePos.Y));
}
}
}
Fondamentalement, je parcoure tous les éléments sélectionnés et change leur position sur le canevas. Cependant, je calcule probablement une nouvelle position de manière incorrecte.
Merci beaucoup :) Ça marche – Berial