想象一下下面的代码。只有第一个窗口出现在顶部,所有后续窗口都不会,也不能出于某种原因进行编程聚焦(它们出现在后台)。知道如何解决这个问题吗?顺便说一句,静态方法/属性是不允许的,也不是任何全局属性。
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Thread t1 = new Thread(CreateForm);
t1.SetApartmentState(ApartmentState.STA);
t1.Start();
t1.Join();
t1 = new Thread(CreateForm);
t1.SetApartmentState(ApartmentState.STA);
t1.Start();
t1.Join();
}
private static void CreateForm()
{
using (Form f = new Form())
{
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer
{
Enabled = true,
Interval = 2000
};
t.Tick += (s, e) => { f.Close(); t.Enabled = false; };
f.TopMost = true;
Application.Run(f);
}
}
答案 0 :(得分:0)
Hans Passant solved the problem:只使用SetForegroundWindow()(P / Invoke)。谢谢,我应该这样说: - )