ContentElement.CaptureMouse 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
尝试将鼠标强制捕获到此元素。
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之前检查 是否IsEnabled为 true
。
如果调用 CaptureMouse 返回 true
,则 IsMouseCaptured 也 true
为 。
如果调用 CaptureMouse 返回 ,则会GotMouseCapture引发 和 IsMouseCapturedChanged 事件,事件RoutedEventArgs.Source中的数据报告为调用方法的CaptureMouse元素。true
如果强制捕获,可能会干扰现有捕获,尤其是与使用鼠标拖放相关的捕获。
若要从所有元素中清除鼠标捕获,请使用提供的 参数调用 Mouse.Captureelement
null
。