2012-09-28 3 views
6

사용자 정의 컨트롤이 있습니다. 사용자 정의 컨트롤에는 전체 화면 영역 (Dock.Fill)을 사용하는 PictureBox가 있습니다. 키보드 이벤트 (예 : 붙여 넣기 기능을 구현하기 위해 Ctrl-V)를 사용하고 싶습니다.winforms의 키보드 이벤트 전파

그러나 PictureBox에는 키 이벤트가 없습니다. PictureBox 아래의 다음 레이어 (예 : 사용자 컨트롤)가 KeyUp 이벤트를 가져 옵니까? 내 KeyUp 이벤트 처리기를 사용자 정의 컨트롤에 추가하면 작동합니까? WPF에는 라우트 된 이벤트의 솔루션이 있다는 것을 알고 있습니다. 그게 어떻게 winforms 세계에서 작동합니까?

+0

PictureBox는 포커스를받지 않습니다. 그래서 네, UserControl 메시지를 가져옵니다. 사용자의 키보드 처리가 양식의 책임을 제어하지 않도록하십시오. –

답변

4

당신은 형태로 이벤트를받을 수 있습니다. Form.KeyPreview을 참조하십시오.

이 속성을 true로 설정하면 양식에 모든 KeyPress, KeyDown 및 KeyUp 이벤트가 수신됩니다. 양식의 이벤트 처리기가 키 입력 처리를 완료하면 키스트 로크가 포커스가있는 컨트롤에 할당됩니다.