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键。
答案 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();
}