Compact Framework 2.0 обнаруживает ввод ключа в текстовом поле - PullRequest
3 голосов
/ 09 ноября 2009

Я разрабатываю небольшое приложение для Motorola 9090-G с использованием .net compact framework 2.0.

Моя проблема в том, что я не могу обнаружить нажатие клавиши ввода в текстовом поле. Как вы определяете нажатие клавиши ввода в текстовом поле?

Кажется, что ни один из 3 методов обнаружения не работает. Интересно, что он работает в эмуляторе ppc. Однако это не работает на моем реальном оборудовании.

private void tbxQTY_KeyDown(object sender, KeyEventArgs e)
{    
  if (e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter || e.KeyCode == Keys.Decimal)
  {
    QTYEntered();
    e.Handled = true;
  }

  if (e.KeyData == Keys.Enter || e.KeyData == Keys.Return)
  { do something }


  if (e.KeyValue == (char)13)
  { QTYEntered(); MessageBox.Show("test"); e.Handled = true; }
}

Ответы [ 4 ]

3 голосов
/ 09 ноября 2009

Для меня ответом было использование события KeyPress, а не KeyDown:

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == 13)
        {
            // Enter
        }
    }
0 голосов
/ 23 ноября 2009

Вот как я делаю это сейчас, чтобы перемещаться между полями, а в «последнем» поле я вызываю функцию сохранения. Я не пропускаю ключ:

Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        Select Case e.KeyCode
            Case Keys.Enter
                ComboBox2.Focus()
        End Select
    End Sub
0 голосов
/ 09 ноября 2009

OEM-производители иногда настраивают свои ключи по-разному. Хитрость заключается в том, чтобы создать приложение, которое просто обрабатывает события нажатия клавиш вверх и вниз, а затем запрашивает значения, которые вы получаете при нажатии соответствующих клавиш. ВЫ МОЖЕТЕ БЫТЬ УДОВЛЕТВОРЕНЫ.

Однажды у меня был блок Intermec. Enter был правильно введен, однако клавишей ACTION была клавиша Enter, а затем F23 примерно через 10 мс. Боже ... это было трудно программировать, чтобы сделать этот ключ полезным (то есть сделать что-то, что не совпадает с ключом ввода). Решение включало функцию под названием:

public bool IsReallyEnter(KeyEventArgs e);

KeyPress - хороший обходной путь, ваша проблема в том, что он будет срабатывать несколько раз, если удерживать клавишу нажатой.

0 голосов
/ 09 ноября 2009

Устройство может не обрабатывать нажатие кнопки доступным для вас способом.

Вы проверили, что событие действительно запускается?

Если нет, вы можете посмотреть на другие события или, возможно, захватить HardwareButton нажатий вместо.

...