c#keypress在后台听

时间:2011-02-20 18:09:34

标签: c# winforms

private void button1_Click(object sender, EventArgs e)
{
    Keys key = new Keys();
    while (true)
    {
        if (key == Keys.F5)
        {
            MessageBox.Show("F5");
        }
        else if (key == Keys.F4)
        {
            MessageBox.Show("F4");
        }
    }
}

当表单失焦时,如何在后台运行?我的最终目标是让它在后台运行,并等待按下F5 / F4键。

2 个答案:

答案 0 :(得分:4)

我不完全确定你的问题是什么。如果要注册全局热键,可以使用windows api函数RegisterHotKey 关于如何在C#中使用此功能,已经有一些问题。

如果您想要一个仅在某个控件或表单上激活的热键,您可以使用WinForms提供的事件。

如果您想要通知桌面上的所有按键,则适合使用低级键盘挂钩。但是如果你只想要一个全局热键,不要使用钩子。

您的代码本身没有多大意义。 new Keys()只返回Keys枚举的默认值(我猜是Keys.None),它永远不等于 F4 F5

答案 1 :(得分:1)

不确定button1和keypress之间的关系,但请看KeyPressEventHandler

下面的代码示例,显示最后按下的键:

    private void button1_Click(object sender, EventArgs e)
    {
        this.textBox1.KeyPress += new KeyPressEventHandler(keypressed);
    }

    private void keypressed(Object o, KeyPressEventArgs e)
    {
        label1.Text = e.KeyChar.ToString();
    }