在ScrollBar上移动时会触发TreeView MouseLeave事件

时间:2010-01-07 23:12:29

标签: .net scrollbar mouseleave mouseenter

在TreeView,ListBox中,或者似乎我的谷歌搜索任何带有ScrollBar的东西,ScrollBar不被视为控件的一部分。

我有一个TreeView,我将其放入自定义控件,它是Dock Fill。因此,它充当了一个自定义TreeView,它具有我们在一个地方管理它的所有逻辑。

在我们程序的某些部分中,我们根据MouseEnter事件将其滑出,然后在MouseLeave事件中将其滑回,但是我们当前正在使用第三方库的TreeView,我已经负责替换它。 / p>

所以我已经把所有内容都移到了Windows TreeView上,但如果它离开整个TreeView,包括滚动条,就找不到可靠捕获MouseLeave -only-的方法。

我已经看到了一个将它包装在一个带有几个像素的面板中并捕获面板的MouseLeave的一种破解解决方案,但我几乎不相信这是微软在这种情况下打算做的事情。

简而言之:

ScrollBar不会为控件触发MouseEnter或MouseLeave,这使得使用MouseEnter / MouseLeave滑出控件不可用,因为用户无法使用ScrollBar。

处理这种情况的首选方法是什么?

2 个答案:

答案 0 :(得分:1)

启动Spy ++并选择Treeview窗口。在滚动条上移动鼠标。那里有很多活动,WM_NCMOUSEMOVE对我来说看起来很不错。在WndProc()覆盖中捕获它。

答案 1 :(得分:1)

放置一个具有ListBox精确大小的面板,包括列表框下的Scrollbar。 然后将mouseleave事件放在面板上。

相关问题