2009-11-09 110 views
3

我正在开发一个使用.net精简框架2.0的摩托罗拉9090-G的小应用程序。紧凑框架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; } 
} 
+0

我记得在Symbol设备上有同样的问题。在不同的品牌设备上工作得很好。我在这里发布了它:http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/156c7d52-3add-4080-90f5-109d83bf02c2 – 2009-11-09 10:48:48

+0

谢谢,该帖子中的帖子导致我使用keyup这似乎符合我的预期。 – muhan 2009-11-10 01:21:07

回答

3

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

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

这也恰好与'if(e.KeyChar ==(char)Keys.Enter)'一样 – Ryan 2017-01-05 00:19:41

0

该设备不得作为的方式,您可以访问被处理按下按钮。

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

如果不是,您可能需要查看其他事件或者可能需要捕获HardwareButton印刷机。

0

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

我曾经有一个Intermec单元。 Enter正确输入,但是ACTION键是Enter,然后大约10毫秒后F23。上帝......很难编码以使这个键有用(即做一些与输入键不一样的东西)。该解决方案包括一个名为功能:

public bool IsReallyEnter(KeyEventArgs e); 

按键响应是一个不错的解决办法,您的问题是,它会触发多次,如果他们持有该keydown。

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