2014-10-01 4 views
1

나는 Infragistic 컨트롤을 사용하는 프로젝트에서 일하고 있습니다. DockableControlPane에 넣은 UserControl을 만든 다음 안에있는 UltraDockManager 안에있는 DockAreaPane에 넣습니다. 이러한 DockableControlPane 중 하나가 도킹 해제되어 있고 포커스가있는 경우 키 누름을 캡처하여 그 "창"을 닫을 수있는 방법이 필요합니다. 내가 가지고있는 문제는 Infragistic 컨트롤에 의해 공개 된 키보드 이벤트가없는 것 같습니다. 나는 내 메인 폼에 OnKeyUp을 오버 라이딩했고 모든 자식 윈도우가 도킹되어있을 때 키를 누른다. 나는 OnKeyUpDockableControlPane 내부의 컨트롤에서 덮어 쓰려고했으나 절대로 호출되지 않습니다. 나는이 부동 창에서 키 누르기를 일관되게 캡처 할 수있는 위치 또는 키보드 바로 가기를 닫을 수있는 일부 설정을 완전히 잃어 버렸습니다. 이 시점에서 나는 키보드 단축키가 그 일을하는 것에 너무 까다 롭지 않다. 그리고 Intragistics에서 전환하는 것은 실행 가능한 옵션이 아닙니다.닫기 키보드 입력 DockableControlPane

답변

0

UltraToolbarsManager에 숨겨진 버튼을 추가하여이 문제를 해결할 수있었습니다. 제 경우에는 키보드 입력을 삼킨 상태 였고 바로 가기를 Ctrl-F4로 설정했습니다.

0

폼 클래스의 ProcessCmdKey를 재정의 할 수

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     switch (keyData) 
     { 
      // open panel combination keys Ctrl + F 
      case (Keys.Control | Keys.F): 
       if (this.ultraDockManager1.ControlPanes["Your Pane Name"] != null) 
        if (this.ultraDockManager1.ControlPanes["Your Pane Name"].Pinned) 
        { 
         this.ultraDockManager1.ControlPanes["Your Pane Name"].Pinned = false; 
        } 
        else if (this.ultraDockManager1.ControlPanes["Your Pane Name"].IsInView) 
        { 
         this.ultraDockManager1.FlyIn(false); 
        } 

        else 
        { 
         // this.ultraDockManager1.ControlPanes["Your Pane Name"].Pin(); 
         this.ultraDockManager1.ControlPanes["Your Pane Name"].Activate(); 
        } 
     } 
    } 

을 어쩌면 다음 하나 : D