Salut à tous,
j'ai créé un User Control en WPF, composé principalement d'un control Grid avec d'autres controls à l'intérieur, peu importe. Ce user control je l'utilise dans un Canvas.
Pendant l'éxécution de mon application je veux pouvoir déplacer ce user control comme si c'était une fenêtre MDI, en gros clic sur le composant, déplacer la souris donc déplacer le composant, classique.
J'ai essayé via l'event "MouseMove" en attribuant les nouvelles coordonnées en fonction de la position de ma souris par rapport au canvas - la position de ma souris par rapport au composant (sinon le composant se déplace directement à l'endroit où l'on clique), sans succés, il se passe absolument rien, j'ai même vérifier le calcul via une MessageBox, tout semble être correct :
Note : si j'utilise les deux premières lignes, certes le composant se déplace direct sur mon pointeur de la souris (impossible donc de déplacer vers le haut et la gauche) mais au moins il se déplace.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void userControl21_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { //Canvas.SetTop(userControl21, e.GetPosition(null).Y); //Canvas.SetLeft(userControl21, e.GetPosition(null).X); //MessageBox.Show(e.GetPosition(userControl21).X + " " + e.GetPosition(userControl21).Y + " " + e.GetPosition(null).X + " " + e.GetPosition(null).Y); Canvas.SetTop(userControl21, e.GetPosition(null).Y - e.GetPosition(userControl21).Y); Canvas.SetLeft(userControl21, e.GetPosition(null).X - e.GetPosition(userControl21).X); } }
Et en second point, surement plus difficile, j'aimerai pouvoir resizer mon composant pendant l'éxécution de la même façon que l'on ferait avec une fenêtre où lorsque l'on est en mode conception. Pas resizer via les valeurs directement, mais bel et bien en agrandissant via les bords du composant.
J'ai absolument aucune idée de comment faire ça.
Merci de votre aide par avance![]()
Partager