紧凑框架2.0如何在文本框中检测回车键。

3

我正在使用.NET Compact Framework 2.0为Motorola 9090-G开发一个小应用程序。

我的问题是,我似乎无法在文本框中检测到回车键按下的事件。如何在文本框中检测回车键的按下事件?

三种检测方法中没有一种似乎有效。有趣的是,在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; }
}

我记得在Symbol设备上遇到了同样的问题。但在另一品牌设备上却能正常工作。我在这里发布了相关帖子:http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/156c7d52-3add-4080-90f5-109d83bf02c2 - Matt Hamilton
谢谢,那个帖子中的一篇文章让我使用了keyup,它似乎按照我的预期工作。 - muhan
4个回答

3

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

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

这也恰好与 if(e.KeyChar == (char)Keys.Enter) 相同。 - Ryan

0

原始设备制造商有时会以不同的方式配置它们的键。诀窍是创建一个只处理按键事件的应用程序,然后查询按下相关键时获得的值。你可能会对结果感到惊讶。

我曾经有一台Intermec设备。Enter键是正确的Enter,但ACTION键是在10毫秒后跟随F23的Enter。天啊...那很难编写代码来使该键有用(即执行与Enter键不同的操作)。解决方案包括一个名为:

public bool IsReallyEnter(KeyEventArgs e);

KeyPress是一个可以的解决方法,你的问题在于如果他们按住键不放,它会多次触发。


0

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

您是否检查了事件是否实际触发?

如果没有,您可能需要查看其他事件或可能捕获硬件按钮按下。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接