문제를 해결할 수 없어서이 질문을 다시 게시하고 있습니다 (원래 here).컨트롤의 ScrollBar 위로 이동할 때 MouseLeave 이벤트가 발생합니다.
TreeView, ListBox 또는 내 Google 검색에서 ScrollBar가있는 것으로 보이지만 ScrollBar는 컨트롤의 일부로 간주되지 않습니다.
저는 사용자 정의 컨트롤에 넣는 TreeView가 있으며, Dock Fill입니다. 그래서 거기에 우리의 모든 논리를 한 곳에서 관리하는 사용자 정의 TreeView 역할을합니다.
우리 프로그램의 일부에서는 MouseEnter 이벤트를 기반으로 슬라이드 아웃하고 MouseLeave 이벤트로 다시 슬라이드합니다. 그러나 현재 대체 할 타사 라이브러리의 TreeView를 사용하고 있습니다.
그래서 모든 것을 Windows TreeView로 옮겼지만 신뢰할 수있는 MouseLeave 캡처 방법을 찾지 못했습니다. 전체 TreeView, 스크롤바가 포함 된 경우에만 해당됩니다.
여러 픽셀이있는 패널에서 패널을 래핑하고 패널의 MouseLeave를 캡처하는 해킹 된 솔루션을 보았습니다.하지만이 상황에서 Microsoft가 의도 한 바가 거의 없다고 생각합니다. 즉
:
스크롤 컨트롤에 대한 MouseEnter이나하는 MouseLeave을 발생하지 않으며, 즉 스크롤 막대를 사용할 수없는 사용자 이후 사용할 수 없게 제어를 슬라이딩 MouseEnter /하는 MouseLeave를 사용합니다.
이 상황을 처리하는 가장 좋은 방법은 무엇입니까?
이전 질문에서 Spy ++를 사용하고 WndProc()에 첨부하여 ScrollBar의 MouseEnter/MouseLeave를 처리하려고 조언을 받았습니다.
그러나 이것은 Spy ++가 폼 수준이나 제어 수준에서 WndProc()에서 실행되지 않았 음을 보여주는 메시지로 작동하지 않았습니다. .NET에서 ScrollBar를 볼 수없는 것입니다.
WndProc()를 사용하면 이러한 단순한 요청에 비현실적인 것처럼 보입니다. 다른 방법이 있습니까? 아니면 WndProc()이 유일한 방법 일 텐데요, 실제로 이걸 달성하고 어떻게 보여줄 수 있습니까?
이것은 완벽하게 작동했습니다. 감사합니다! –