由於無法解決問題(原始here),我正在重新發布此問題。MouseLeave事件在控件的滾動條上移動時觸發
在TreeView,ListBox中,或者它似乎從我的谷歌搜索任何與ScrollBar,ScrollBar不被視爲控件的一部分。
我有一個TreeView,我把它放在一個自定義控件中,它是Dock填充。所以它就像一個自定義的TreeView一樣,它擁有我們所有的邏輯來管理它。
在我們的程序的某些部分,我們根據MouseEnter事件將其滑出,然後將其滑回到MouseLeave事件中,但是我們目前正在使用第三方庫的TreeView來執行此操作,因此我一直負責進行替換。
所以我把所有的東西都移到了Windows的TreeView中,但是找不到一個方法來可靠地捕獲MouseLeave - 只有它離開了整個TreeView,包含了滾動條。
我已經看到了一個黑客解決方案,將它包裝在一個具有幾個像素的面板中,並捕獲面板的MouseLeave,但我幾乎不相信這是微軟在這種情況下打算做的。
在短:
的滾動條不火的MouseEnter或鼠標離開的控制,這使得使用的MouseEnter /鼠標離開滑動了控制,因爲用戶無法使用滾動條無法使用。
處理這種情況的首選方法是什麼?
在上一個問題中,我得到了使用Spy ++的建議,並試圖附加到WndProc()來處理ScrollBar的MouseEnter/MouseLeave。
但是,這並沒有工作,因爲Spy ++顯示的消息沒有在WndProc()的窗體級別或控件級別觸發。就好像.NET不能看到ScrollBar一樣。使用WndProc()對於這樣一個簡單的請求似乎也是不切實際的,是否有任何其他方式來做到這一點,或者如果WndProc()是唯一的方法,有沒有人真的能夠實現這一點,並告訴我怎麼做?
這工作完美,謝謝! – 2011-01-11 19:16:48