2009-06-18 3 views
0

안녕, C# app에 양식이 있습니다. 이 양식에서 KeyDown 이벤트 Alt + U를 캡처하여 두 번째 양식을 엽니 다. 두 번째 폼에는 문서를 인쇄하는 Alt + U (폼을 여는 데 사용했던 것과 동일한) 단축키가있는 toolStripButton이 있습니다. 자, 내 문제는 내가 두 번째 폼을 열 때입니다. 폼을 여는 데 사용한 바로 가기 키가 있기 때문에 toolstripbutton을 클릭하면 자동으로 이벤트가 트리거됩니다. 어떻게 이런 일이 발생하지 않도록 할 수 있습니다.KeyDown 이벤트가 다음 형식으로 처리되지 않도록합니다.

감사합니다 요한은

답변

0

이 귀하의 질문에 대답하지 않습니다,하지만 당신은 정말이 두 가지 매우 다른 행동에 대한 두 개의 서로 다른 바로 가기 키를 만들기에 대해 생각해야한다. 완전히 다른 두 가지 작업을 수행하는 두 개의 동일한 바로 가기 키를 사용하면 IMO가 매우 혼란 스럽습니다.

질문에 대답하기 위해 "ShouldRaise"또는 다른 것과 같은 두 번째 양식의 일부 속성을 갖고 두 번째 양식의 Alt + U 이벤트 만 발생시킵니다. 처음에는 false로 설정하고 첫 번째 양식의 KeyUp에서는 true로 설정하십시오.

0

하나의 단축키를 다른 것으로 변경하는 것이 더 쉬울까요? 나는 BFree에 동의한다. 최고의 디자인이 완전히 다른 2 가지 기능을위한 똑같은 지름길을 가지고있는 것은 아니다. 모든 단축키/가속 키는 고유해야합니다.

왜 같은 것으로 변경 양식 페이지의 바로 가기를 변경할 수 없습니다 : Ctrl 키 + 왼쪽이 할 두 번째 양식에

0

를 (이전 페이지로 이동)

Ctrl 키 + 마우스 오른쪽 (다음 페이지로 이동) 실제로 ToolStripMenuItem이 대신 있습니까? ToolStripButton에는 ShortcutKeys 속성이 없습니다.

사용자가 부모 폼에서 Alt-U를 누를 때 새 양식을 인스턴스화합니까?

부모 양식인지 확인하기 위해 문서를 인쇄하는 처리기에서 보낸 사람 개체를 확인 했습니까?

문제를 재현 할 수 없습니다. 조금 설명하면 도움이 될 것입니다.

0

또 다른 쉬운 해결책은 이벤트 수신기에서 어떤 형식인지 확인하는 것입니다. 두 번째 폼 내부에서 이벤트 핸들러 내부로 돌아갈 수 있습니다.

다시 한번 가장 우아한 해결책은 아니지만 괜찮은 해결책이되어야합니다.

관련 문제