2010-01-07 69 views
0

在TreeView,ListBox或它似乎從我的谷歌搜索任何與ScrollBar,ScrollBar不被視爲控件的一部分。TreeView MouseLeave事件在滾動條上移動時觸發

我有一個TreeView,我把它放在一個自定義控件中,它是Dock填充。所以它就像一個自定義的TreeView一樣,它擁有我們所有的邏輯來管理它。

在我們的程序的某些部分,我們根據MouseEnter事件將其滑出,然後將其滑回到MouseLeave事件中,但是我們目前正在使用第三方庫的TreeView來執行此操作,因此我一直負責進行替換。

所以我把所有的東西都移到了Windows的TreeView中,但是找不到一個可靠的捕獲MouseLeave的方法 - 只有它離開了整個TreeView,包含了滾動條。

我已經看到了一個黑客解決方案,將它包裝在一個具有幾個像素的面板中,並捕獲面板的MouseLeave,但我幾乎不相信這是微軟在這種情況下打算做的。

在短:

的滾動條不火的MouseEnter或鼠標離開的控制,這使得使用的MouseEnter /鼠標離開滑動了控制,因爲用戶無法使用滾動條無法使用。

處理這種情況的首選方法是什麼?

回答

1

啓動Spy ++並選擇Treeview窗口。在滾動條上移動鼠標。在那裏有很多活動,WM_NCMOUSEMOVE看起來對我來說很好。在WndProc()覆蓋中捕獲它。

+0

這是.net,無權訪問WndProc或WM_NCMOUSEMOVE – 2010-01-08 20:10:10

+1

確實如此,WndProc()是TreeView類的一種方法,您可以在自己的派生類中重載該方法。 WM_NCMOUSEMOVE是一個數字,它是0xa0。檢查MSDN文檔。 – 2010-01-08 20:37:40

1

將一個包含列表框的確切大小的面板,包括列表框中的滾動條。 然後在面板上放置mouseleave事件。

相關問題