WPF Обнаружить движение мыши? - PullRequest
0 голосов
/ 20 января 2010

Ну, я пытаюсь сделать свой собственный базовый элемент управления 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"/>

так что это работает, когда мышь находится на прямоугольнике ... но если мы посмотрим, как работает ползунок, он не тот же самый, вы щелкаете и удерживаете мышь нажатой и можете перетащить ее куда угодно, даже за пределы окна, и она все еще обновляет свою положение ..

Так как это сделать? я думаю, это класс мыши, но я не понимаю, как его использовать.

1 Ответ

3 голосов
/ 20 января 2010

Попробуйте использовать метод Mouse.Capture .

Вы передаете ссылку на ваш контроль и:

Когда элемент захватывает мышь, он получает ввод мыши независимо от того, находится ли курсор в пределах его границ.

Если CaptureMode не указан, по умолчанию CaptureMode имеет значение Element.

Обратите внимание на перегрузку CaptureMode . Это перечисление может помочь при захвате с подэлементами и т. Д.

...