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();
}

вот откуда я это взял

Другие вопросы по тегам