【发布时间】:2015-12-29 13:31:26
【问题描述】:
我的简单 WinForms 应用由一个表单组成,它有两个重要的方法:
private void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Q)
{
qKeyPressed = true;
}
keyTimer.Start();
}
private void MainWindow_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Q)
{
qKeyPressed = false;
}
keyTimer.Stop();
}
在表单的构造函数中,我使用button1.TabStop = false; 将button1 焦点设置为false,因此我的表单可以处理KeyUp 和KeyDown 方法。我希望我的表单即使在button1 click 事件之后也能得到关注。我试过了:
button1.TabStop = false;
this.Focus();
在private void button1_Click(object sender, EventArgs e) 中,但这似乎不起作用,并且单击后的按钮看起来像焦点,并且方法KeyUp 和KeyDown 被禁用。如何解决我的问题?提前致谢
【问题讨论】:
-
改为实现 IMessageFilter,这样无论哪个控件具有焦点,您都可以看到关键消息。
-
如果你正在寻找一个只能被点击但永远无法聚焦的按钮,看看这个stackoverflow.com/questions/32823525/…