我已经处理了一个组合框控件的previewmousewheel事件。当我的鼠标在控件上并移动鼠标的中心轮时,此事件就会升起。但是当我的鼠标离开控制器并移动鼠标的中心轮时,此事件不会升高。
有人可以解释一下为什么会这样吗?
如果我想在鼠标离开控件时引发事件,那么我应该处理哪个事件?
答案 0 :(得分:2)
这是预期的行为。
如果鼠标光标未定位在控件上方,则不会通过它路由鼠标事件。如果光标位于不同的控件上,您不希望鼠标单击事件通过它进行路由吗?
如果您想要这种行为,那么我建议您在页面/视图中处理鼠标滚轮事件并从那里进行路由,但要谨慎,但是因为用户期望鼠标和键盘事件由焦点项处理。
答案 1 :(得分:0)
在用户希望将事件转发到控件的情况下,您可以使用Mouse.Capture(someControl)
和Mouse.Capture(null)
来停止转发。
你应该只在有意义的时候使用它。例如。当拖动滚动条时,当你开始在拇指上拖动但只要你按住鼠标左键就不需要保持在它上面。
使用Mouse.Capture()
时,请确保始终提供捕捉的方法。