本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

UIElement.CaptureMouse 方法 ()

 

尝试强制鼠标捕获到此元素。

命名空间:   System.Windows
程序集:  PresentationCore(位于 PresentationCore.dll)

public bool CaptureMouse()

返回值

Type: System.Boolean

true 如果成功捕获了鼠标;,否则为 false

若要捕获,必须启用一个元素。 检查是否 IsEnabledtrue 之前调用 CaptureMouse

如果调用 CaptureMouse 返回 true, ,然后 IsMouseCaptured 也是 true

如果调用 CaptureMouse 返回 true, ,则 GotMouseCaptureIsMouseCapturedChanged 引发事件,与 RoutedEventArgs.Source 数据在事件报告为该元素其中 CaptureMouse 调用方法。 如果您强制捕获,您可能会干扰现有捕获 — 尤其是在具有与拖放鼠标捕获。

若要清除鼠标捕获来自所有元素,请调用 Mouse.Captureelement 参数作为提供 null

下面的示例实现对鼠标和键输入的组合捕获 (取消捕获) 的鼠标的处理程序,并启用了一个特殊的鼠标模式用于查看 3D 模型。

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();
}

.NET Framework
自 3.0 起可用
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
返回页首
显示: