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