![]() |
1
3
滚动条位于树视图的非客户端区域。当鼠标移动到那里时,它开始生成非客户端消息,如WM\u NCMOUSEMOVE和WM\u NCMOUSELEAVE。您必须对TreeView进行子类化,并重写WndProc()以检测这些消息。 不过,这并不能真正解决您的问题,您仍然很难处理边缘案例。带计时器的低技术方法始终有效:
|
![]() |
2
2
我认为有几种不同的方法可以做到这一点,但关键是你希望有一个暂停的行动。我认为结合两种技术可能会奏效: 将控件放在面板上,停靠以填充,然后使用面板的鼠标指针打开您的行为—这将包括控件的滚动条。您也可以使用面板的MouseLeave事件,但是您必须检查光标的位置,以确保它没有移动到包含的控件中。这种方法基本上是可靠的,但快速移动鼠标可能会混淆它。 如果将此功能与显示/隐藏控件时启动的计时器结合使用,并定期检查光标位置。这可以工作,但是隐藏控件之前的超时不一定是一致的(因为计时器在它们进入控件时启动)。您可以在控件中的鼠标移动上停止/启动计时器来减轻这种情况。 http://lovethedot.s3.amazonaws.com/100609StackoverflowScrollbarQuestion.zip
您正在跟踪进入控件周围面板的入口,如果光标不在跟踪的控件内,则从该面板退出。 为了获得更好的“离开”体验,它还结合了一个计时器来检查光标的位置:
|
![]() |
JOO · 使用udpClient从多个IP地址连续接收数据 3 年前 |
![]() |
Futterkiste · 函数比例图 3 年前 |
![]() |
user18789895 · 我应该如何验证WinForms应用程序? 3 年前 |
![]() |
beriscen · 如何使整个链接标签区域可点击? 3 年前 |
![]() |
lpmaxim · 当鼠标光标悬停在按钮上时,背景图像会移动 3 年前 |