Ctrl + PageUp/PageDown и Ctrl + Вкладка являются ярлыками по умолчанию для TabControl. Они помогают в перемещении между смежными вкладками. Я хотел бы Ctrl + поведение PageX работать только на внешние вкладки (tab1, tab2) и Ctrl + поведение Вкладки для внутренних вкладок (tab3, tab4), когда мой фокус находится в управлении (текстовое поле здесь). Для этого я должен отключить поведение по умолчанию. Там некоторый путь состоит в том, чтобы сделать это?
Я посмотрел на ProcessDialogKey и IsInputKey, но они, кажется, работают только с единственным keydata. Модификаторы не обрабатываются.
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);
}
}