Вопрос

Я новичок здесь, и у меня есть небольшие проблемы с приложением C #. Я хочу захватить событие нажатия клавиш. Сначала это не было проблемой, но после того, как я добавил несколько кнопок в форму, событие нажатия клавиши формы игнорирует клавиши со стрелками и перемещает фокус с одной кнопки на другую (работает событие повышения) Есть ли способ остановить это и заставить их делать что-то еще, когда я держу клавиши со стрелками?

Это было полезно?

Решение

Установите KeyPreview свойство в форме равно true. Это позволит форме видеть событие keydown в дополнение к дочерним элементам управления.

Добавьте это в свою форму ...

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData.Equals(Keys.Right))
    {
        MessageBox.Show("Right Key Pressed!");
    }

    return base.ProcessCmdKey(ref msg, keyData);
}

Другие советы

Если вы не хотите, чтобы для элементов управления выполнялась обычная функция нажатия клавиши, вам нужно будет установить событие нажатия клавиши для каждого элемента управления и установить атрибут handled для аргументов события, чтобы он был истинным, чтобы он не всплывал до встроенной функциональности управления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top