在 WPF 中,如果我们要做拖动效果,通常会调用一下 CaptureMouse
/CaptureStylus
以便当鼠标或手指离开控件的时候依然能够响应 Move
和 Up
事件。不知有没有注意到这两个函数其实是有 bool
返回值的?——是的,它们可能会失败。
在调试一个项目代码的时候,我就发现了这种失败,观察返回值确实是 false
,然而为什么呢?
查看 .Net Framework 的源码 我们发现,CaptureMouse
最终调到了 Mouse.Capture
方法:
public static bool Capture(IInputElement element)
{
return Mouse.PrimaryDevice.Capture(element);
}
然后一步步调到了