我想尝试制作我自己的基本Slider控件,以便我可以学习如何与鼠标进行交互......
到目前为止,我有这个: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"/>
所以当鼠标在矩形上时这是有效的...但是如果我们看一下滑块的行为方式不同,你可以单击并按住鼠标并将其拖动到窗口外的任何位置,它仍然会更新它位置..
那怎么办?我的猜测是鼠标类,但我不明白如何使用它。
答案 0 :(得分:3)
尝试使用Mouse.Capture方法。
您传递了对您的控件的引用,并且:
当元素捕获鼠标时,无论光标是否在其边界内,它都会接收鼠标输入。
如果未指定CaptureMode,则默认的CaptureMode为Element。
记下CaptureMode超载。如果您使用子元素等进行捕获,此枚举可能会有所帮助。