2014-10-01 49 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