Я пересылаю этот вопрос из-за невозможности решить проблему (оригинал здесь ).
В TreeView, ListBox или, как мне кажется, из моих поисков в Google что-нибудь с помощью ScrollBar,ScrollBar не считается частью элемента управления.
У меня есть TreeView, который я помещаю в пользовательский элемент управления, и это Dock Fill.Таким образом, он действует как пользовательский TreeView, который имеет всю нашу логику для управления им в одном месте.
В некоторых частях нашей программы мы выдвигаем его на основе события MouseEnter и вставляем обратно на событие MouseLeaveОднако в настоящее время мы используем для этого TreeView сторонней библиотеки, замену которой мне поручено.
Итак, я переместил все в Windows TreeView, но не могу найти способ надежного захватаMouseLeave - только - если он покидает весь TreeView, включая полосу прокрутки.
Я видел одно хакерское решение обернуть его в панель с несколькими пикселями и захватить MouseLeave панели, но я вряд ли верю, что эточто Microsoft намеревался сделать в этой ситуации.
Короче говоря:
ScrollBar не запускает MouseEnter или MouseLeave для элемента управления, и это делаетиспользование MouseEnter / MouseLeave для выдвижения элемента управления непригодно для использования, поскольку пользователь не может использовать ScrollBar.
Что такоепредпочтительный способ справиться с этой ситуацией?
В предыдущем вопросе мне дали совет использовать Spy ++ и попытаться подключиться к WndProc () для обработки MouseEnter / MouseLeave для ScrollBar.
Thisоднако он не работал, поскольку сообщения, показанные Spy ++, не запускались в WndProc () на уровне формы или уровне управления.Как будто .NET просто не может видеть ScrollBar.
Использование WndProc () также кажется нереальным для такого простого запроса, есть ли другой способ сделать это, или если WndProc () - единственный способКто-нибудь на самом деле смог достичь этого и показать мне, как?