紧凑框架2.0检测文本框中的输入密钥

时间:2009-11-09 10:42:49

标签: c# .net compact-framework

我正在使用.net紧凑框架2.0为摩托罗拉9090-G开发一个小应用程序。

我的问题是我似乎无法在文本框中检测到输入按键。如何检测文本框中的输入按键?

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 个答案:

答案 0 :(得分:3)

对我来说,答案是使用KeyPress事件,而不是KeyDown:

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == 13)
        {
            // Enter
        }
    }

答案 1 :(得分:0)

设备可能无法以您可以访问的方式处理按钮。

您是否检查过该事件是否实际被触发?

如果没有,您可能希望查看其他事件或者可能需要捕获HardwareButton按下。

答案 2 :(得分:0)

OEM有时会以不同的方式配置密钥。诀窍是创建一个只处理按键事件和按键事件的应用程序,然后查询按下相关按键时获得的值。你可能会对结果感到满意。

我有一次Intermec单位。输入正确输入,但ACTION键为Enter,后跟F23约10 ms。上帝......很难编写代码来使密钥有用(即做一些与输入密钥不同的东西)。解决方案包括一个名为:

的函数
public bool IsReallyEnter(KeyEventArgs e);

KeyPress是一个不错的解决方法,你的问题是如果他们持有keydown会多次触发。

答案 3 :(得分:0)

这就是我现在如何在字段和“最后”字段之间导航,我调用我的保存功能。我不会错过任何一把钥匙:

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