【问题标题】:compact framework 2.0 detecting enter key in a textbox紧凑框架 2.0 检测文本框中的输入键
【发布时间】:2009-11-09 10:42:48
【问题描述】:

我正在使用 .net compact framework 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; }
}

【问题讨论】:

标签: c# .net compact-framework


【解决方案1】:

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

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

【讨论】:

  • 这也恰好和if(e.KeyChar == (char)Keys.Enter)一样
【解决方案2】:

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

您是否检查过事件确实被触发了?

如果没有,您可能想查看其他事件或可能捕获HardwareButton 按下。

【讨论】:

    【解决方案3】:

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

    我曾经有一个 Intermec 装置。 Enter 是正确输入,但是大约 10 毫秒后,ACTION 键是 Enter,然后是 F23。上帝......很难编写代码以使该键有用(即做一些与回车键不同的事情)。该解决方案包括一个名为:

    public bool IsReallyEnter(KeyEventArgs e);
    

    KeyPress 是一个不错的解决方法,您的问题是,如果他们按住 keydown,它将触发多次。

    【讨论】:

      【解决方案4】:

      这就是我现在在字段之间导航的方式,在“最后一个”字段上,我调用了我的保存函数。我不错过任何一个键:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 2013-04-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多