1

我有一个带有图像的列表框。我正在捕捉 MouseMove。在 FF (Win7 & OSX) 和 IE8 中,只要鼠标移到图像上就会触发。然而,在 Chrome(在 OSX 上)中,它仅在按下鼠标按钮时触发。这种 Chrome 行为实际上会非常有用,但前提是我可以控制它,而不是让它在某些浏览器上随机发生。那么有谁知道某个地方是否存在某种整体设置使其在 Chrome 中以这种方式运行,或者它只是 SL 实现中的不一致?我怀疑是后者,因为我一直无法在 SL 中找到测试鼠标按钮是否按下的方法。

谢谢你的帮助。

4

1 回答 1

0

据我了解,问题是鼠标左键按下时不会触发 MouseMove、MouseEnter 和 MouseLeave 事件。

我对 TextBox 有同样的问题。实际上它也发生在 IE 中,我的谷歌搜索告诉我这是设计使然。进一步的谷歌搜索揭示了原因:该元素正在使用CaptureMouse()方法捕获鼠标。所以我刚刚从 TextBox 派生并覆盖了OnMouseMove(...)方法:

protected override void OnMouseMove(MouseEventArgs e)
{
    base.OnMouseMove(e);
    ReleaseMouseCapture();
}

注意:我不确定,捕获鼠标是否是这个方法的基本实现唯一的事情,所以我在调用它之后添加了ReleaseMouseCapture(),但是注释掉它当然也可以。

于 2012-02-28T08:23:20.437 回答