Закрыть DockableControlPane с помощью ввода с клавиатуры

1

Я работаю над проектом, который использует Infragistic controls. Он создает UserControl который помещается в DockableControlPane который затем помещается в DockAreaPane который находится внутри UltraDockManager который находится внутри Form. Когда одна из этих DockableControlPane отстыкована и имеет фокус, мне нужен способ захвата нажатия клавиши, что позволит мне закрыть это "окно". Проблема, с которой я сталкиваюсь, заключается в том, что, по-видимому, не наблюдается каких-либо событий клавиатуры, которые публикуются в Infragistic control. Я переопределяю OnKeyUp в своей основной форме, и он захватывает нажатия клавиш, когда все дочерние окна состыкованы, но не с плавающей и сосредоточенной. Я попытался переопределить OnKeyUp в элементе управления внутри DockableControlPane, но это никогда не OnKeyUp. Я полностью потеряю, где я могу последовательно записывать нажатия клавиш в этих плавающих окнах или некоторые параметры, которые позволят использовать комбинацию клавиш для их закрытия. На данный момент я не слишком придирчив к тому, что сочетание клавиш будет выполнять эту работу. И отказ от Intragistics не является жизнеспособным вариантом.

Теги:
infragistics

2 ответа

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

0

Я смог справиться с этим, добавив скрытую кнопку в UltraToolbarsManager, что в моем случае было тем, что поглощало ввод на клавиатуре, и установил его ярлык на Ctrl-F4.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню