2011-03-03 5 views
1

간단한 목록 상자 만있는 Form이 있습니다. 목록 상자가 전체 도킹되어 Form의 FormBorderStyle이 None으로 설정됩니다.WinForm에 전체 도킹 된 ListBox가 하나만있는 경우 MouseLeave가 실행되지 않습니다.

MouseLeave 이벤트를 양식에 연결하면 실행되지 않습니다. (또한 MouseMove, MouseHover 등을 실행하지 않습니다.)

그러나 목록 상자의 도킹을 해제하고 크기를 조정하면 양식의 일부가 표시되고 양식의 보이는 부분 위로 마우스를 이동하면 마우스 이벤트가 다시 시작됩니다.

전체 도킹 된 목록 상자로만 구성된 경우에도 마우스 이벤트를 받도록 양식을 가져 오는 방법은 무엇입니까?

감사합니다.

+0

대신 이벤트를 목록 상자에 첨부 할 수 있습니까? – Blorgbeard

+0

전체 양식이 다른 컨트롤로 덮여있을 때 분명히 폼에 대한 마우스 이벤트를 가져올 수 없습니다. 모든 것이 목록 상자로 이동합니다. –

+0

기본적으로 WinForms에는 이벤트 버블이 없습니다. 그 맞습니까? –

답변

1

마우스가 양식을 입력하지 않아도 안됩니다. 목록 상자에 입력됩니다. ListBox 컨트롤에서 MouseLeave 이벤트를 사용해야합니다.

+0

내가 이벤트를 목록 상자에 첨부하지 않은 이유는 다른 순간에 목록 상자가 아닐 수 있다는 것입니다. 폼에 private 변수로 컨트롤에 대한 참조를 저장하고 이벤트를 첨부/분리합니다. 어쨌든 고마워. –

0

나는 생각하지 않습니다. 컨트롤은 이벤트를 처리하므로 Form으로 바이 패스되지 않습니다.

관련 문제