이 시점에서 당신에게 사용할 수있는 기성품 옵션이 있습니다.
그러나 모델링하기에 충분히 간단해야합니다. 아마도 하나의 클래스, 아마도 KeyboardChordProvider
을 만들 것입니다. 양식 레벨에서 키보드 이벤트에 대해 알아야합니다.다른 곳에서 설명한 것처럼 Form.KeyPreview
속성은 true
이어야합니다. 이 공급자가 Form.KeyPress
이벤트를 구독하는 것으로 충분할 수 있습니다. 양식을 전달한 경우 공급자의 생성자에서이 모든 작업을 수행 할 수 있습니다.
잠재적 인 키 입력을 공급자에게 등록해야합니다.
내부적으로이 인스턴스는 현재 상태를 추적합니다. 코드의 첫 번째 키를 나타내는 키 스트로크가 관찰 될 때마다 구독자가 텍스트를 설정할 수 있도록 공급자의 상태를 업데이트하고 이벤트를 발생시킵니다. (CTRL + W)을 눌렀습니다. 코드의 두 번째 키를 기다리는 중입니다.
다음 키 입력이 잠재적 인 보조 옵션과 일치하면 일치 항목이 생겨 입력 된 스트로크 세부 정보가 포함 된 ChordPressed
이벤트를 발생시킬 수 있습니다. 또는 코드를 등록 할 때 제공자에게 제공된 특정 콜백을 호출 할 수도 있습니다 (ChordPressed
이벤트 처리기에서 switch 문이나 다른 디스패치를 피하기 위해).
언제든지 키 입력이 다음 옵션과 일치하지 않으면 공급자 상태가 재설정됩니다.
공급자 내부에서 트리 구조를 사용하여 가능한 키 입력을 모델링 할 수 있습니다. 공급자의 현재 상태는 특정 트리 노드입니다. 처음에는 루트 노드가 활성화됩니다. 자식이 키 스트로크와 일치하면 다음 스트로크를 예상하여 현재 노드가됩니다. 자식이 리프 노드라면 전체 코드가 일치하고 ChordPressed
이벤트 (해당 지점으로 이동 한 스트로크 체인 전달)를 보내거나 리프에 저장된 콜백을 호출합니다. 키 입력이 아이와 일치 할 때마다 루트 노드를 활성으로 다시 설정합니다.
나는이 디자인이 당신이 원하는 것을 얻을 것이라고 생각합니다.
키보드 단축키 코드는 다중 키 바로 가기입니다. Ctrl + W, C와 마찬가지로 클래스 뷰를 엽니 다. 첫 번째 키 집합 (CTRL + W)을 누르면 "(CTRL + W)을 눌렀습니다. 코드의 두 번째 키 대기 중 ..."이 상태 표시 줄에 나타납니다. 이걸 정확히 재현하고 싶습니다. – JJS
WPF에 대한이 구현을 발견했습니다. http://insystusa.com/Products.aspx – JJS
코드의 반대가 아닌가요? –