2014-10-01 86 views
1

我正在使用Infragistic控件的項目。它會創建一個UserControl,將其放入DockableControlPane,然後將其放入位於Form內的UltraDockManager內的DockAreaPane。當其中一個DockableControlPane s被解除鎖定並關注焦點時,我需要一種捕獲按鍵的方法,這將允許我關閉該「窗口」。我遇到的問題是,似乎沒有任何鍵盤事件由Infragistic控件公開。我在主窗體中覆蓋了OnKeyUp,它捕獲所有子窗口停靠時的按鍵,但是如果其中一個浮動且處於焦點狀態,則不會捕獲按鍵。我試圖覆蓋DockableControlPane內部的控件中的OnKeyUp,但這種情況永遠不會被調用。我完全喪失了在哪裏可以始終如一地捕獲這些浮動窗口中的按鍵,或者一些可以使鍵盤快捷鍵關閉它們的設置。在這一點上,我不會太挑剔哪個鍵盤快捷鍵可以完成這項工作。而從Intragistics轉換不是一個可行的選擇。使用鍵盤輸入關閉DockableControlPane

回答

0

我能夠通過向UltraToolbarsManager添加一個隱藏按鈕來處理這個問題,在我的情況下,它是吞嚥鍵盤輸入的內容,並將其設置爲Ctrl-F4的快捷方式。

0

您可以覆蓋ProcessCmdKey Form類:

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