Вы должны получить свой собственный элемент управления из TabControl, так что вы можете перехватывать клавиши со стрелками и генерировать событие. Добавьте новый класс в свой проект и вставьте код, показанный ниже. Компиляция. Отбросьте новый элемент управления сверху панели инструментов на свою форму.
using System;
using System.Windows.Forms;
class MyTabControl : TabControl {
public event EventHandler<KeyEventArgs> ArrowKeys;
protected void OnArrowKeys(KeyEventArgs e) {
EventHandler<KeyEventArgs> handler = ArrowKeys;
if (handler != null) handler(this, e);
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == Keys.Up || keyData == Keys.Down || keyData == Keys.Left || keyData == Keys.Right) {
var e = new KeyEventArgs(keyData);
OnArrowKeys(e);
if (e.Handled) return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
Пример использования в виде:
private void myTabControl1_ArrowKeys(object sender, KeyEventArgs e) {
if (myTabControl1.SelectedIndex == 1) {
// Do something with e.KeyData
//...
e.Handled = true;
}
}
Честно говоря, что вы хотите, кажется немного странным для меня с точки зрения дизайна. Может быть, будет лучше, если вы опишете свою настоящую задачу? – nightcoder
Ваш вопрос очень неясен. Когда вы говорите «рейз», вы имеете в виду «ручку»? – SLaks
Жаль, что неясно. Мне нужно что-то сделать, когда TabPage2 имеет фокус. Когда я нажимаю Arrow_Up, например, он изменит некоторые метки в TabPage2. Но это будет только в TabPage2, а не в других вкладках. – Qrew