显示未聚焦的新WinForms窗口

本文关键字:WinForms 窗口 聚焦 显示 | 更新日期: 2023-09-27 17:48:48

我正在主窗口的顶部生成并显示一个新的WinForms窗口。如何实现原始(主窗口)保持焦点?在显示新窗口后重新设置焦点并不能解决我的问题,因为我需要防止主窗口的标题栏闪烁。新窗口必须保持在主窗口的顶部,所以我必须设置topMost=true。然而,我认为这对问题没有什么区别。

谢谢!

显示未聚焦的新WinForms窗口

显示新表单后设置焦点效果良好。我的任务栏不会闪烁。

private void button1_Click(object sender, EventArgs e)
{
     Form2 f2 = new Form2();
     f2.TopMost = true;
     f2.Show();
     this.Focus();            
}

我能问你为什么要把焦点放回主窗体上吗?因为默认情况下,新窗体会在主窗口的顶部绘制,你必须关闭或移动新窗体才能查看主窗口。

如果您正试图实现与Office2007中的"超级"工具提示类似的功能,那么最好使用已经实现这一功能的第三方库。另一种选择可能是将窗口创建为NativeWindow,并使用interop调用与之交互