2010-01-20 6 views
0

bien im essayant de faire mon propre contrôle de curseur de base pour que je puisse apprendre ABIT comment interagir avec la souris ...WPF Détecter le déplacement de la souris?

j'ai jusqu'à présent ceci:

vb.net:

Private Sub Rectangle_MouseMove(ByVal sender as Object, ByVal e as System.Windows.Input.MouseEventArgs) 

If (e.LeftButton = MouseButtonState.Pressed) Then 
    Dim p As Point = Mouse.GetPosition(Me) 
    Rectangle.SetValue(FrameworkElement.MarginProperty, New Thickness(p.X - Rectangle.Width/2, 0, 0, 0)) 
End If 
End Sub 

Private Sub Rectangle_MouseDown(ByVal sender as Object, ByVal e as System.Windows.Input.MouseButtonEventArgs) 

End Sub 

Private Sub Rectangle_MouseUp(ByVal sender as Object, ByVal e as System.Windows.Input.MouseButtonEventArgs) 

End Sub 

XAML:

<Rectangle x:Name="Rectangle" Fill="White" Stroke="Black" HorizontalAlignment="Left" Margin="0" VerticalAlignment="Top" Width="100" Height="75" MouseMove="Rectangle_MouseMove" MouseDown="Rectangle_MouseDown" MouseUp="Rectangle_MouseUp"/> 

si cela fonctionne alors que la souris est sur le rectangle .. mais si l'on regarde la façon dont le curseur se comporte pas le même son que vous cliquez et ho Ld la souris vers le bas et peut glisser n'importe où même à l'extérieur de la fenêtre et il met à jour sa position.

Alors, comment cela est-il fait? Je suppose que c'est la classe de souris, mais je ne comprends pas comment l'utiliser.

Répondre

3

Essayez d'utiliser la méthode Mouse.Capture.

Vous passez une référence à votre contrôle et:

Lorsqu'un élément capture la souris, il reçoit l'entrée de la souris si le curseur se trouve dans ses frontières.

Si un CaptureMode n'est pas spécifié, CaptureMode par défaut est Element.

Prenez note de la surcharge CaptureMode. Cette énumération peut aider si vous capturez avec des sous-éléments, etc.

+0

ok cela a fonctionné des merveilles: P, pour utiliser cette exécution Mouse.Capture (Rectangle, CaptureMode.Element) sur la souris vers le bas et Mouse.Capture (Rectangle, CaptureMode.None) sur la souris !!! – Peter

+0

nous avons un gagnant! Bonne chance :) –

+0

c'est tellement génial. J'aurais été coincé pendant plus d'heures si je n'avais pas vu ça. :RÉ –

Questions connexes