I am reposting this question due to inability to solve the problem (original here).
In the TreeView, ListBox, or it seems from my google searches anything with a ScrollBar, the ScrollBar is not considered a part of the control.
I have a TreeView that I'm putting into a custom control, and it's Dock Fill. So there it acts as a custom TreeView which has all our logic to manage it in one place.
In parts of our program we slide it out based on a MouseEnter event, and slide it back in on a MouseLeave event, however we are currently using a 3rd party library's TreeView for this, which I have been tasked with replacing.
So I've moved everything over to the Windows TreeView, but can not find a way to reliable capture the MouseLeave -only- if it leaves the entire TreeView, scrollbar included.
I've seen one hackish solution of wrapping it in a panel with several pixels and capturing the MouseLeave of the panel, but I hardly believe this is what Microsoft had intended us to do in this situation.
In Short:
The ScrollBar does not fire MouseEnter or MouseLeave for the control, and that makes using MouseEnter/MouseLeave for sliding out the control unusable since the user can not use the ScrollBar.
What is the preferred way to handle this situation?
In the previous question I was given the advice to use Spy++ and attempt to attach to WndProc() to handle MouseEnter/MouseLeave for the ScrollBar.
This however did not work as the messages Spy++ showed were not firing in the WndProc() at form level, or control level. It's as if .NET just can't see the ScrollBar.
Using WndProc() also seems unrealistic for such a simple request, is there any other way to do this, or if WndProc() is the only way, has anyone actually been able to achieve this and show me how?