저는 Windows Form의 KeyPreview 속성을 알고 있으므로 양식에서 포커스가있는 컨트롤로 전달되기 전에 키 이벤트를받을 수 있습니다.컨트롤에서 폼에 키 이벤트를 버블 링하는 방법은 무엇입니까?
그러나 집중된 컨트롤에 도달 한 후 Form이 이벤트를 수신하도록합니다.
테스트에서는 Form에 TextBox를 배치했습니다. TextBox에서 타이핑 할 때 특정 키 명령을 누르면 기본 동작을 수행해야합니다. Ctrl-S, F1, 등등, TextBox를 통해 상위 수준에서 처리 할 수있는 양식으로 버블 링해야합니다. 이 명령은 TextBox가 기본적으로 수행하지 않는 명령입니다.
먼저 TextBox를 통과하는 이벤트가 필요합니다. 이 기능이 필요한 응용 프로그램은이 간단한 예제보다 복잡합니다. 예를 들어 TextBox가 포커스가있는 컨트롤이면 Ctrl-C 및 Ctrl-V를 사용하여 기본 복사 & 붙여 넣기를 수행해야합니다. 그러나 여러 다른 컨트롤에 중점을 두었을 때 이러한 명령은 처리 할 최상위 Form-Level에서 끝나야합니다.
편집 : 입력 이벤트가 Form에서 Focused Control으로 이동하고 예상했던 것처럼 다른 방향으로 이동하지 않는 것 같습니다. Focus에서 Form으로 넘어 간다면 나는 문제가 없을 것입니다.
Edit2가 : 읽고 데 (짧게)이 문서에 불구하고 : http://www.codeproject.com/KB/WPF/BeginWPF3.aspx 지금은 그냥 '가'기대 한 '버블'의 종류는 WPF에서 사용할 수, 그리고 표준 C#이라고 가정하고 . 추악한 코드 조각을 쓰는 것과는 반대로 사용자가 내 앱과 상호 작용하는 방식을 다시 생각해야한다고 생각합니다.
추한 코드가없는 C#에서 WPF 스타일의 버블 링을 할 때 회신 할 수있는 모든 사람에게 큰 의미가 있습니다.
지금까지 최고의 답변; 나는 이것을 조금 가지고 놀고 그것이 어떻게되는지 볼 것입니다. 건배. – Wex
내 필요를 위해 일하고있는 것 같습니다. 참고 사항. Control.FromHandle (focusHandle)은 ToolStripComboBox 및 PropertyGrid의 필드에서 null을 반환하는 것으로 보입니다. 다른 것이있을 수 있습니다. 하지만 내 애플 리케이션에 큰 문제가 아니에요. – Wex