2010-01-20 126 views
0

以及即時通訊試圖讓我自己的基本滑塊控件,這樣我可以學習如何升技用鼠標交互...WPF檢測鼠標移動?

到目前爲止,我有這樣的:

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"/> 

所以此工程而鼠標是在矩形..但如果我們看看滑塊如何表現它不是你點擊的相同和浩把鼠標放下,可以將它拖到任何位置,甚至可以在窗戶外面更新它的位置。

那麼這是如何完成的?我的猜測是它的鼠標類,但我不明白如何使用它。

回答

3

嘗試使用Mouse.Capture方法。

你把它傳遞到您的控制的基準和:

當一個元素捕獲鼠標,它接收鼠標輸入光標是否是其邊界內。

如果未指定CaptureMode,則默認CaptureMode爲Element。

請注意​​過載。這個枚舉可以幫助你如何捕獲子元素等

+0

確定這工作奇蹟:P,使用此鼠標運行Mouse.Capture(Rectangle,CaptureMode.Element)Mouse.Capture(Rectangle,CaptureMode.None )在鼠標上! – Peter 2010-01-20 11:25:17

+0

我們有一個贏家!祝你好運:) – 2010-01-20 11:32:27

+0

這太棒了。如果我沒有看到這個,我會被困更長時間。 :d – 2010-12-13 23:17:49