안녕하세요, F1 키를 눌렀을 때 (포커스가있는 컨트롤의 컨텍스트에서) 사용자에게 도움을 제공하기 위해 C#으로 작성된 Windows 응용 프로그램을 확장하려고합니다.사용자 도움말의 모든 컨트롤에 대한 전역 이벤트 핸들러
내가 원하는 것은 Control.HelpRequested 이벤트를 사용하는 것이지만이 컨트롤을 모든 컨트롤을 확장하여이 이벤트를 처리하는 방법을 잘 모르겠습니다. http://msdn.microsoft.com/en-us/library/system.windows.forms.control.helprequested.aspx
그것의 이벤트를 연결하는이 이벤트를 처리하고 (폼이 열릴 때) 정말 형태로 모든 컨트롤을 통해 반복의 아이디어를 좋아하지 않는다 "손으로"각 컨트롤을 업데이트 할 정말 가능하지 매니저.
특정 이벤트를 처리하도록 양식의 모든 컨트롤을 확장하는 깔끔한 방법이 있습니까?
이
단지로 구성되어 있습니다하지만 난 많은 감사하는이[HandleEvent Control.HelpRequested, ApplyTo Typeof(Control)] void MyEventHandler(object sender, EventArgs e) { // code to handle event... }
어떤 제안이나 다른 접근 방식에 아마 아이디어 같은 것을 쓸 수 있어야처럼 나는 거의 느낀다 -
사실 저는이 기사를 이미 읽었으며 지금까지는 ProcessKeyPreview 메서드를 구현했습니다. (btw 도움말 컨텍스트가 데이터베이스에서 직접 가져와야하므로 윈도우 도움말 파일 형식이 isn이 아닙니다. 옵션). –
그런 다음 컨트롤을 클릭하고 컨텍스트 도움말을 다시 볼 수있는 물음표 단추 (대개 양식의 오른쪽 상단)를 사용하여 도움을 제공해야한다는 것을 기억했습니다. 오늘 아침에 약간의 연구가 끝나자. 닷넷 프레임 워크가 개발자를 위해 특별히 헬프 시스템을 구현하기 위해이 이벤트를 드러내고 있기 때문에 F1 키 트래핑보다 더 적합한 HelpRequested 이벤트가 나타났습니다. 모두 같은 제안을 얻습니다 - 감사합니다 :) –
예, 제안 된 솔루션이지만, "전역"이벤트를 발생 시키려면 WndProc에서 직접 실행하고 단일 이벤트 처리기를 사용할 수 있습니다. – Groo