2012-10-11 3 views
3

윈도우가 텍스트 상자에 의해 발생한 KeyDown 이벤트를 처리하고 이벤트 Handled 플래그를 true로 설정하면 텍스트 상자가 눌려진 키를 무시한다는 것을 알아 챘습니다. 콘텐츠에 추가하지 않습니다.WPF TextBox가 KeyDown 이벤트가 처리되었음을 "알"는 방법

상황이 어떻게 작동하는지에 따라, 먼저 Window에서 TextBox로 터널링 한 다음 KeyDown 이벤트가 TextBox에서 창으로 버블 링되면 PreviewKeyDown 이벤트가 발생합니다. 창 이벤트 핸들러가 Handled 이벤트를 설정하면 이벤트는 더 이상 TextBox에 의해 처리되지 않지만 효과가 있고 눌린 키가 TextBox에 추가되지는 않습니다.

누군가가 어떻게 작동하는지 설명 할 수 있습니까?

(이것은 일반적인 질문이지만 우리가 사용하는 타사 컨트롤에서 비슷한 동작을 본 후에 제기되었으며 문제를 일으켰습니다. 컨트롤에서 이벤트를 처리하지만 버블 링을 중지해야합니다. 위로).

답변

0

글쎄, 사실상, 그 사건은 언제든지 거품이 나거나 터널이든 상관없이 처리됩니다. 대부분의 이벤트 처리기가 "처리 된"이벤트를 수신하도록 등록되지 않은 경우입니다.

예를 들어, KeyDown 이벤트에 가입하고 어딘가에 처리되는 경우에도 "통화"를받을 수있는 옵션이 있습니다.

그렇습니다. 예, 이벤트의 순서는 일반적으로 상단 (터널링)부터 시작하여 터널링하여 요소로 다시 터지기 시작합니다.

더 궁금한 점이 있으면 알려주세요.

+0

나는 사건의 순서를 이해한다. 이해가 안되는 것은 TextBox가 포함 된 창에서 처리 될 때 이벤트가 처리되면 (버블) 이벤트가 처리 된 정보를 얻는 방법입니다. TextBox에 도착하면 이벤트를 처리 할 때 TextBox가 Handled 플래그를 확인하지만 나중에는 처리하지 않을 것으로 예상됩니다. – splintor

관련 문제