![]() |
1
3
滚动条位于树视图的非客户端区域。当鼠标移动到那里时,它开始生成非客户端消息,如WM\u NCMOUSEMOVE和WM\u NCMOUSELEAVE。您必须对TreeView进行子类化,并重写WndProc()以检测这些消息。 不过,这并不能真正解决您的问题,您仍然很难处理边缘案例。带计时器的低技术方法始终有效:
|
![]() |
2
2
我认为有几种不同的方法可以做到这一点,但关键是你希望有一个暂停的行动。我认为结合两种技术可能会奏效: 将控件放在面板上,停靠以填充,然后使用面板的鼠标指针打开您的行为—这将包括控件的滚动条。您也可以使用面板的MouseLeave事件,但是您必须检查光标的位置,以确保它没有移动到包含的控件中。这种方法基本上是可靠的,但快速移动鼠标可能会混淆它。 如果将此功能与显示/隐藏控件时启动的计时器结合使用,并定期检查光标位置。这可以工作,但是隐藏控件之前的超时不一定是一致的(因为计时器在它们进入控件时启动)。您可以在控件中的鼠标移动上停止/启动计时器来减轻这种情况。 http://lovethedot.s3.amazonaws.com/100609StackoverflowScrollbarQuestion.zip
您正在跟踪进入控件周围面板的入口,如果光标不在跟踪的控件内,则从该面板退出。 为了获得更好的“离开”体验,它还结合了一个计时器来检查光标的位置:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 3 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 4 月前 |
![]() |
CactusCake · if语句中应有分号 5 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 5 月前 |