代码之家  ›  专栏  ›  技术社区  ›  Werner van den Heever

按键事件C#

  •  2
  • Werner van den Heever  · 技术社区  · 13 年前

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

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

    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;
        }
    }
    

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

    2 回复  |  直到 13 年前
        1
  •  3
  •   Dmitrii Dovgopolyi Jon Skeet    13 年前

    你应该设置 KeyPreview 表单的属性 true

    this.KeyPreview = true;
    

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

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

    if(char.ToUpper(e.KeyChar) == (char)Keys.R)
    
        2
  •  0
  •   Community Mohan Dere    9 年前

    我认为这篇文章也有类似之处: CTRL + S to submit form and all inputs

    我也做过类似的事情,它确实有效。它可能需要更多的输入,因为你不想在完成之前意外地键入hit r来重定向页面?