要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语
本文档已存档,并且将不进行维护。

UIElement.CaptureMouse 方法

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

命名空间:  System.Windows
程序集:  PresentationCore(在 PresentationCore.dll 中)

public bool CaptureMouse()

返回值

类型:System.Boolean
如果成功捕获了鼠标,则为 true;否则为 false

实现

IInputElement.CaptureMouse()

若要执行捕获,必须启用元素。 在调用 CaptureMouse 之前,请检查 IsEnabled 是否为 true

如果调用 CaptureMouse 的结果返回 true,则 IsMouseCaptured 也为 true

如果调用 CaptureMouse 的结果返回 true,则会引发 GotMouseCaptureIsMouseCapturedChanged 事件,并将事件数据中的 RoutedEventArgs.Source 报告为调用 CaptureMouse 方法的元素。 如果强制执行捕获,则可能会干扰现有捕获,特别是与鼠标拖放有关的捕获。

若要从所有元素中清除鼠标捕获,请用值为 nullelement 参数调用 Mouse.Capture

下面的示例实现用于鼠标和键输入组合的一对处理程序,该程序捕获(以及取消捕获)鼠标并启用用于查看 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

受以下版本支持:4、3.5、3.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求
显示: