【发布时间】:2008-11-05 17:22:24
【问题描述】:
我正在生成并在主窗口顶部显示一个新的 WinForms 窗口。我怎样才能使原来的(主窗口)保持焦点?在显示新窗口后重新设置焦点并不能解决我的问题,因为我需要防止主窗口的标题栏闪烁。新窗口必须保持在主窗口的顶部,所以我必须设置 topMost=true。但是,这对我认为的问题没有影响。
谢谢!
【问题讨论】:
我正在生成并在主窗口顶部显示一个新的 WinForms 窗口。我怎样才能使原来的(主窗口)保持焦点?在显示新窗口后重新设置焦点并不能解决我的问题,因为我需要防止主窗口的标题栏闪烁。新窗口必须保持在主窗口的顶部,所以我必须设置 topMost=true。但是,这对我认为的问题没有影响。
谢谢!
【问题讨论】:
在显示新表单后设置焦点可以正常工作。我的任务栏不闪烁。
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.TopMost = true;
f2.Show();
this.Focus();
}
请问您为什么要将焦点重新设置在主窗体上,因为默认情况下,新窗体将在主窗口顶部绘制,您必须关闭或移动新窗体才能查看主窗体窗口。
【讨论】:
如果您尝试实现类似于 Office 2007 中的“超级”工具提示的功能,则最好使用已经实现此功能的第三方库。另一种选择可能是将窗口创建为 NativeWindow 并使用互操作调用与之交互。
【讨论】: