C#键在Windows窗体UserControl中按下了监听器

时间:2013-11-11 11:46:39

标签: c# winforms keypress keylistener

美好的一天,

我想在表单用户控件中添加键侦听器。其中包含主要表格。

当用户在我的应用程序中按下某个键时,我希望它能做一些事情。

我该怎么做?

例如,

。如果我按了w,那么会出现一个弹出窗口,说你按了w。

我在用户控件类中试过这个;

  private void UC_ControlsTank_KeyPress(object sender, KeyPressEventArgs e)
    {
        Console.Write("You pressed:" + e.KeyChar);
    }

但是当我按键时,似乎没有任何事情发生。

编辑:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        MessageBox.Show(e.KeyChar.ToString());
    }
}

这是我的表格: 以下是我在visual studio中的链接方式: enter image description here

3 个答案:

答案 0 :(得分:8)

首先,在捕获KeyPress之前,您必须将Win Form的KeyPreview属性设置为true。除非你将它设置为true,否则不会捕获KeyPress。

答案 1 :(得分:3)

您可以使用<{p}}事件

Control.KeyPress Event

这个KeyPressed会告诉你按下了什么键

编辑:

所以我只是在一个示例应用程序上尝试了这个并且它运行良好

System.Windows.Forms.KeyEventArgs e

答案 2 :(得分:2)

这是一个例子,

  private void control_KeyDown(object sender, KeyEventArgs e)
{
    switch (e.KeyData)
        {
            case Keys.W:
                {
                   MessageBox.Show("you pressed w");
                    break;
                }
            case Keys.B:
                {
                   MessageBox.Show("you pressed b");
                    break;
                }
            case Keys.F11:
                {
                   MessageBox.Show("you pressed F11");
                    break;
                }
            case Keys.Escape:
                {
                    this.Close();
                    break;
                }
            default:
                {
                    break;
                }
        }
}

参考此Overriding Keydown in a User Control using ProcessKeyPreview