使用键盘输入关闭DockableControlPane

时间:2014-10-01 19:08:18

标签: c# infragistics

我正在开发一个使用Infragistic控件的项目。它会创建一个放入UserControl的{​​{1}},然后将其放入位于DockableControlPane内的DockAreaPane内的UltraDockManager。当这些Form中的一个被取消停靠并具有焦点时,我需要一种方法来捕获按键,这将允许我关闭该“窗口”。我遇到的问题是,似乎没有任何键盘事件由Infragistic控件公开。我在我的主窗体中覆盖了DockableControlPane,它在所有子窗口停靠时捕获了按键,但是如果一个浮动并处于焦点位置则不会。我试图覆盖OnKeyUp内控件中的OnKeyUp,但永远不会被调用。我完全不知道我可以在这些浮动窗口中持续捕获按键,或者某些设置可以使键盘快捷键关闭它们。在这一点上,我不会太挑剔什么键盘快捷键将完成这项工作。从Intragistics转而不是一个可行的选择。

2 个答案:

答案 0 :(得分:0)

我能够通过向UltraToolbarsManager添加一个隐藏按钮来处理这个问题,在我的情况下是吞下键盘输入,并将其设置为Ctrl-F4的快捷方式。

答案 1 :(得分:0)

您可以覆盖Form Class的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