В TreeView, ListBox или, похоже, из моего поиска Google ничего с ScrollBar, ScrollBar не считается частью элемента управления.Событие TreeView MouseLeave срабатывает при перемещении по ScrollBar
У меня есть TreeView, который я настраиваю в пользовательский элемент управления, и это Dock Fill. Таким образом, он действует как пользовательский TreeView, у которого есть вся наша логика, чтобы управлять им в одном месте.
В некоторых частях нашей программы мы выдвигаем его на основе события MouseEnter и помещаем его обратно в событие MouseLeave, однако в настоящее время мы используем TreeView для сторонней библиотеки для этого, которому мне было поручено заменить.
Итак, я переместил все на Windows TreeView, но не могу найти способ надежного захвата MouseLeave - только если он покидает весь TreeView, включая полосу прокрутки.
Я видел одно хакерское решение обернуть его в панель с несколькими пикселями и захватить MouseLeave панели, но я почти не верю, что это то, что Microsoft намеревалась нам сделать в этой ситуации.
Вкратце:
скроллбара не срабатывает MouseEnter или MouseLeave для контроля, и что делает использование MouseEnter/MouseLeave для выскальзывания управления непригодным, так как пользователь не может использовать ScrollBar.
Каков предпочтительный способ обработки этой ситуации?
Это .net, не имеет доступа к WndProc или WM_NCMOUSEMOVE –
Уверен, что WndProc() - это метод класса TreeView, который можно перегрузить в свой производный класс. WM_NCMOUSEMOVE - это число, оно равно 0xa0. Проверьте документы MSDN. –