Отключите ярлыки по умолчанию на TabControl

Alt text

Ctrl + PageUp/PageDown и Ctrl + Вкладка являются ярлыками по умолчанию для TabControl. Они помогают в перемещении между смежными вкладками. Я хотел бы Ctrl + поведение PageX работать только на внешние вкладки (tab1, tab2) и Ctrl + поведение Вкладки для внутренних вкладок (tab3, tab4), когда мой фокус находится в управлении (текстовое поле здесь). Для этого я должен отключить поведение по умолчанию. Там некоторый путь состоит в том, чтобы сделать это?

Я посмотрел на ProcessDialogKey и IsInputKey, но они, кажется, работают только с единственным keydata. Модификаторы не обрабатываются.

7
задан Glorfindel 23 May 2019 в 10:06
поделиться

1 ответ

TabControl имеет необычную обработку сочетаний клавиш, они отражены в методе OnKeyDown () . Это было сделано, чтобы не мешать работе с клавиатурой для элементов управления на странице вкладки.

Вам придется переопределить метод. Добавьте новый класс в свой проект и вставьте код, показанный ниже. Скомпилировать. Перетащите новый элемент управления из верхней части панели инструментов в форму .

using System;
using System.Windows.Forms;

class MyTabControl : TabControl {
  protected override void OnKeyDown(KeyEventArgs e) {
    if (e.KeyData == (Keys.Tab | Keys.Control) ||
        e.KeyData == (Keys.PageDown | Keys.Control)) {
      // Don't allow tabbing beyond last page
      if (this.SelectedIndex == this.TabCount - 1) return;
    }
    base.OnKeyDown(e);
  }
}
12
ответ дан 6 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: