ContentElement.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

实现

示例

以下示例根据 元素是否已捕获鼠标来捕获鼠标或释放捕获。 请注意,此示例将预期捕获目标元素 IInputElement 强制转换为 接口,因此最初调用 IInputElement.CaptureMouse 方法。 IInputElement如果不确定要捕获鼠标的元素是 还是 ,UIElement则强制转换为 是一种ContentElement非常有用的技术。 然后,接口强制转换和接口方法调用在内部调用适当的特定于类型的 CaptureMouse 实现,而无需对 或 ContentElement进行试用强制转换UIElement。 这种相同的强制转换技术适用于定义其他成员 IInputElement ,例如许多与输入相关的事件和其他与输入相关的方法。

private void CaptureMouseCommandExecuted(object sender, ExecutedRoutedEventArgs e)
{
  MessageBox.Show("Mouse Command");
  IInputElement target = Mouse.DirectlyOver;

  target = target as Control;
  if (target != null)
  {
    if (!target.IsMouseCaptured)
    {
      Mouse.Capture(target);
    } else {
      Mouse.Capture(null);
    }
  }
}
Private Sub CaptureMouseCommandExecuted(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
  MessageBox.Show("Mouse Command")
  Dim target As IInputElement = Mouse.DirectlyOver

  target = TryCast(target, Control)
  If target IsNot Nothing Then
    If Not target.IsMouseCaptured Then
      Mouse.Capture(target)
    Else
      Mouse.Capture(Nothing)
    End If
  End If
End Sub

注解

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

如果调用 CaptureMouse 返回 true,则 IsMouseCapturedtrue为 。

如果调用 CaptureMouse 返回 ,则会GotMouseCapture引发 和 IsMouseCapturedChanged 事件,事件RoutedEventArgs.Source中的数据报告为调用方法的CaptureMouse元素。true 如果强制捕获,可能会干扰现有捕获,尤其是与使用鼠标拖放相关的捕获。

若要从所有元素中清除鼠标捕获,请使用提供的 参数调用 Mouse.Captureelementnull

适用于

另请参阅