UIElement.CaptureMouse Metoda
Definicja
Próbuje wymusić przechwycenie wskaźnika myszy do tego elementu.Attempts to force capture of the mouse to this element.
public:
virtual bool CaptureMouse();
public bool CaptureMouse ();
abstract member CaptureMouse : unit -> bool
override this.CaptureMouse : unit -> bool
Public Function CaptureMouse () As Boolean
Zwraca
true
Jeśli mysz została przechwycona pomyślnie; w przeciwnym razie false
.true
if the mouse is successfully captured; otherwise, false
.
Implementuje
Przykłady
W poniższym przykładzie jest implementowana para uchwytów dla kombinacji wskaźnika myszy i wejścia klawiszy, która przechwytuje (i nie przechwytuje) mysz i włącza specjalny tryb myszy do wyświetlania modelu 3W.The following example implements a pair of handlers for mouse and key input combination that capture (and uncapture) the mouse and enable a special mouse mode for viewing a 3D model.
private void MouseDownHandler(object sender, MouseButtonEventArgs e)
{
if (!Enabled) return;
e.Handled = true;
if (Keyboard.IsKeyDown(Key.F1) == true)
{
Reset();
return;
}
UIElement el = (UIElement)sender;
_point = e.MouseDevice.GetPosition(el);
// Initialize the center of rotation to the lookatpoint
if (!_centered)
{
ProjectionCamera camera = (ProjectionCamera)_slaves[0].Camera;
_center = camera.LookDirection;
_centered = true;
}
_scaling = (e.MiddleButton == MouseButtonState.Pressed);
if (Keyboard.IsKeyDown(Key.Space) == false)
_rotating = true;
else
_rotating = false;
el.CaptureMouse();
}
private void MouseUpHandler(object sender, MouseButtonEventArgs e)
{
if (!_enabled) return;
e.Handled = true;
// Stuff the current initial + delta into initial so when we next move we
// start at the right place.
if (_rotating == true)
{
_rotation = _rotationDelta * _rotation;
}
else
{
_translate += _translateDelta;
_translateDelta.X = 0;
_translateDelta.Y = 0;
}
//_scale = _scaleDelta*_scale;
UIElement el = (UIElement)sender;
el.ReleaseMouseCapture();
}
Private Sub MouseDownHandler(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
If Not Enabled Then
Return
End If
e.Handled = True
If Keyboard.IsKeyDown(Key.F1) = True Then
Reset()
Return
End If
Dim el As UIElement = CType(sender, UIElement)
_point = e.MouseDevice.GetPosition(el)
' Initialize the center of rotation to the lookatpoint
If Not _centered Then
Dim camera As ProjectionCamera = CType(_slaves(0).Camera, ProjectionCamera)
_center = camera.LookDirection
_centered = True
End If
_scaling = (e.MiddleButton = MouseButtonState.Pressed)
If Keyboard.IsKeyDown(Key.Space) = False Then
_rotating = True
Else
_rotating = False
End If
el.CaptureMouse()
End Sub
Private Sub MouseUpHandler(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
If Not _enabled Then
Return
End If
e.Handled = True
' Stuff the current initial + delta into initial so when we next move we
' start at the right place.
If _rotating = True Then
_rotation = _rotationDelta * _rotation
Else
_translate += _translateDelta
_translateDelta.X = 0
_translateDelta.Y = 0
End If
'_scale = _scaleDelta * _scale
Dim el As UIElement = CType(sender, UIElement)
el.ReleaseMouseCapture()
End Sub
Uwagi
Aby można było przechwycić element, musi on być włączony.To be captured, an element must be enabled. Sprawdź IsEnabled , czy true
przed wywołaniem CaptureMouse .Check whether IsEnabled is true
before you call CaptureMouse.
W przypadku wywołania CaptureMouse zwrotnego true
IsMouseCaptured jest również true
.If calling CaptureMouse returns true
, then IsMouseCaptured is also true
.
Jeśli wywołanie CaptureMouse zwrotne zwraca true
, GotMouseCapture IsMouseCapturedChanged zdarzenia i są wywoływane, z RoutedEventArgs.Source w przypadku danych zdarzenia raportowanych jako element, w którym CaptureMouse wywoływana jest metoda.If calling CaptureMouse returns true
, then the GotMouseCapture and IsMouseCapturedChanged events are raised, with RoutedEventArgs.Source in the event data reported as the element where the CaptureMouse method is called. Jeśli wymusisz przechwytywanie, możesz zakłócać istniejące przechwycenia — szczególnie w przypadku przechwytywania, które odnoszą się do przeciągania i upuszczania za pomocą myszy.If you force capture, you might interfere with existing captures - especially with captures that relate to drag-and-drop with the mouse.
Aby wyczyścić funkcję przechwytywania myszy ze wszystkich elementów, należy wywołać polecenie Mouse.Capture z element
parametrem dostarczonym jako null
.To clear mouse capture from all elements, call Mouse.Capture with the element
parameter provided as null
.