UIElement.CaptureMouse Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Пытается принудительно захватить мышь данным элементом.
public:
virtual bool CaptureMouse();
public bool CaptureMouse ();
abstract member CaptureMouse : unit -> bool
override this.CaptureMouse : unit -> bool
Public Function CaptureMouse () As Boolean
Возвращаемое значение
Значение true
, если мышь успешно захвачена, в противном случае — значение false
.
Реализации
Примеры
В следующем примере реализуется пара обработчиков для сочетания ввода мыши и клавиш, которые захватывают (и отменяют захват) мыши и обеспечивают специальный режим мыши для просмотра трехмерной модели.
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
Комментарии
Для записи необходимо включить элемент . Проверьте, есть ли IsEnabled перед true
вызовом CaptureMouse.
Если вызов CaptureMouse возвращает true
, то IsMouseCaptured также true
имеет значение .
Если вызов CaptureMouse возвращает true
, то GotMouseCapture возникают события и IsMouseCapturedChanged , при RoutedEventArgs.Source этом в данных события указывается как элемент, в котором CaptureMouse вызывается метод . При принудительном захвате вы можете помешать существующим захватам, особенно с захватами, связанными с перетаскиванием с помощью мыши.
Чтобы удалить захват мыши от всех элементов, вызовите Mouse.Capture с параметром element
, предоставленным как null
.