C# отключить навигацию по стрелкам с помощью tabcontrol
У меня есть tabcontrol в моей форме, и мне нужно использовать событие keyup для управления чем-то.
Когда я нажимаю левую или правую кнопку, страница вкладки изменяется, и я хочу отключить навигацию по клавиатуре tabcontrol.
это возможно сделать?
3 ответа
Решение
Вам не нужно расширять TabControl, просто подпишитесь на его событие KeyDown и обработайте его.
tabControl1.KeyDown+=new KeyEventHandler(tabControl1_KeyDown);
private void tabControl1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
{
e.Handled = true;
}
}
tabControl1 не меняет страницы. KeyUp формы и tabControl1 срабатывает нормально.
Я рекомендую вам просто взять эти ключи на Form
уровень и установить Handled
собственность на true
(возвращая true
), чтобы элемент управления не получал нажатие клавиши.
Добавьте этот метод к вашему Form
:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Left || keyData == Keys.Right)
{
// do what you need to do and the
// return true will stop processing
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
Я думаю, что вы ищете это.
if (e.KeyCode == Keys.Tab)
{
//your logic
e.SuppressKeyPress();
}