【问题标题】:C# WinForms: bring back focus to form after button clickC# WinForms:单击按钮后将焦点重新带回窗体
【发布时间】: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,因此我的表单可以处理KeyUpKeyDown 方法。我希望我的表单即使在button1 click 事件之后也能得到关注。我试过了:

button1.TabStop = false;
this.Focus();

private void button1_Click(object sender, EventArgs e) 中,但这似乎不起作用,并且单击后的按钮看起来像焦点,并且方法KeyUpKeyDown 被禁用。如何解决我的问题?提前致谢

【问题讨论】:

  • 改为实现 IMessageFilter,这样无论哪个控件具有焦点,您都可以看到关键消息。
  • 如果你正在寻找一个只能被点击但永远无法聚焦的按钮,看看这个stackoverflow.com/questions/32823525/…

标签: c# winforms


【解决方案1】:

在按钮点击函数中运行这个:

this.ActiveControl = null;

当您单击按钮时,您将其设置为活动控件。删除此属性将使您将注意力集中在表单上。

【讨论】:

  • 谢谢,效果很好,我不知道为什么有人给你的答案减分
  • 是的,我也没有。很高兴为您提供帮助!
猜你喜欢
  • 2013-08-29
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多