确保新表单位于堆栈顶部

时间:2016-10-11 21:35:50

标签: c# .net winforms

WinForms中,我需要确保新打开的Form位于堆栈顶部,并且不会隐藏在实例化它的Form后面。我不想使用TopMost属性,因为它强制新表单保持在所有正在运行的进程打开的所有Forms之上。我只需要让我的新Form当前应用程序中打开所有表单。

1 个答案:

答案 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);
 }