UIElement.CaptureMouse Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Pogingen om het vastleggen van de muis naar dit element af te dwingen.
public:
virtual bool CaptureMouse();
public bool CaptureMouse();
abstract member CaptureMouse : unit -> bool
override this.CaptureMouse : unit -> bool
Public Function CaptureMouse () As Boolean
Retouren
true als de muis is vastgelegd; anders, false.
Implementeringen
Voorbeelden
In het volgende voorbeeld wordt een paar handlers geïmplementeerd voor combinatie van muis- en toetsinvoer waarmee de muis wordt vastgelegd (en uitkapsel) en een speciale muismodus wordt ingeschakeld voor het weergeven van een 3D-model.
private void MouseDownHandler(object sender, MouseButtonEventArgs e)
{
if (!Enabled) return;
e.Handled = true;
if (Keyboard.IsKeyDown(Key.F1))
{
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))
_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)
{
_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
Opmerkingen
Een element moet zijn ingeschakeld om te worden vastgelegd. Controleer of IsEnabled het is true voordat u belt CaptureMouse.
Als oproepen CaptureMouse worden geretourneerd true, is dat IsMouseCaptured ook true.
Als aanroepen CaptureMouse worden geretourneerd true, worden de GotMouseCapture en IsMouseCapturedChanged gebeurtenissen gegenereerd, waarbij RoutedEventArgs.Source de gebeurtenisgegevens worden gerapporteerd als het element waarin de CaptureMouse methode wordt aangeroepen. Als u het vastleggen forceert, kunt u bestaande opnamen verstoren, met name met captures die betrekking hebben op slepen en neerzetten met de muis.
Als u de muisopname van alle elementen wilt wissen, roept u Mouse.Capture de element parameter aan die is opgegeven als null.