在WinForms
中,我需要确保新打开的Form
位于堆栈顶部,并且不会隐藏在实例化它的Form
后面。我不想使用TopMost
属性,因为它强制新表单保持在所有正在运行的进程打开的所有Forms
之上。我只需要让我的新Form
在当前应用程序中打开所有表单。
答案 0 :(得分:1)
此方法将检查当前应用程序的OpenForms集合,以获取传入标题的窗口。如果找到该窗口,则会激活该窗口,或者让窗口管理器启动窗口。
不确定你如何计划Z-Ordering你的Windows,但是你可以在代码中使用循环并对每个openform做一些事情。
public void FindWindowOrMake(string theTitle)
{
var found = false;
foreach (var openForm in Application.OpenForms.Cast<Form>()
.Where(openForm => openForm.Text.Equals(theTitle)))
{
found = true;
openForm.Activate();
break;
}
if (found) return; // target found and activated
// create new instance
WinMgr.Create(theTitle);
}