【问题标题】:KeyPress Event C#按键事件 C#
【发布时间】:2013-02-21 08:46:50
【问题描述】:

我有一个带有 9 个按钮的“主页”屏幕。按钮的所有文本属性都设置为:&Returns,以便 R 在显示中带有下划线。

因此,当我在主屏幕上按 R 时,我希望加载返回屏幕。这就是我所拥有的:

private void frmHome_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.R)
    {
        frmReturns R = new frmReturns(empid);
        R.Show();
        this.Hide();
        e.Handled = true;
    }
}

但这绝对没有任何作用。有人可以帮忙吗?

【问题讨论】:

  • 它的表现如何?事件是否会触发?它会触发并且 If 条件不通过吗?
  • 您应该查看与此类功能相关的所有其他帖子。比如这个stackoverflow.com/questions/5048748/…
  • @dutzu 甚至不会触发事件。
  • 尝试挂钩到不同的事件,如 Key_Down 并确保表单具有焦点,否则该事件将被触发到另一个目标。

标签: c# windows-ce device keypress


【解决方案1】:

您应该将表单的KeyPreview 属性设置为true

this.KeyPreview = true;

否则会在窗体的一些内部控件中引发按下按键的事件,而不是在主窗体中。

此外,您的比较区分大小写。 e.KeyChar == (char)Keys.R 仅适用于 R,但不适用于 r

if(char.ToUpper(e.KeyChar) == (char)Keys.R)

【讨论】:

  • 谢谢,刚刚注意到我没有 KeyPreview 事件。开发设备应用程序。我需要一个替代品。
  • @WernervandenHeever 您的目标是什么 Compact Framework 版本?
  • @WernervandenHeever 键预览不是事件。这是一个属性。
  • in msdn.microsoft.com/en-us/library/… KeyPreview 支持的平台:Windows CE、Windows Mobile for Pocket PC、Windows Mobile for Smartphone
  • @DmitryDovgopoly k,我的坏..财产
【解决方案2】:

我认为这篇文章与此类似: CTRL + S to submit form and all inputs

我做过类似的事情,它确实有效。它可能需要更多输入,因为您不想在完成之前不小心输入 hit r 以使页面重定向到某个地方?

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多