KeyDown распознает клавиши со стрелками влево и вправо, но не вверх и вниз.

В приведенном ниже коде клавиши со стрелками влево и вправо функционируют должным образом, но стрелки вверх и вниз не распознаются (пошагово выполняя первые два условия встречаются там, где это уместно, но вторые два никогда не встречаются):

private void textBox1_KeyDown(object sender, KeyEventArgs e) {
    TextBox tb = (TextBox)sender;

    if (e.KeyCode.Equals(Keys.Left)) {
        SetFocusOneColumnBack(tb.Name);
        e.Handled = true;
        return;
    }
    if (e.KeyCode.Equals(Keys.Right)) {
        SetFocusOneColumnForward(tb.Name);
        e.Handled = true;
        return;
    }
    if (e.KeyCode.Equals(Keys.Up)) {
        SetFocusOneRowUp(tb.Name);
        e.Handled = true;
        return;
    }
    if (e.KeyCode.Equals(Keys.Down)) {
        SetFocusOneRowDown(tb.Name);
        e.Handled = true;
        return;
    }
}

Почему это может быть и как я могу это исправить?

ОБНОВЛЕНИЕ

Вот что я вижу, когда я наводил курсор на e.Keycode во время прохождения. Если я нажму

  • ...Кнопка со стрелкой влево, я увижу: e.KeyCode = "LButton | MButton | Пробел"
  • ...Кнопка со стрелкой вправо, я увижу: e.KeyCode = "LButton | RButton | MButton | Пробел"
  • ...Клавиша со стрелкой вверх, я вижу: e.KeyCode = "RButton | MButton | Пробел"
  • ...Клавиша со стрелкой вниз, я вижу: e.KeyCode = "Backspace | Пробел"

Это сбило меня с толку (то, что оно мне показывает), но мой код вводится по клавишам влево и вправо, а не для клавиш вверх и вниз, независимо от того, как сильно я сжимаю зубы.

6
задан Alain 9 May 2012 в 17:45
поделиться