确保新表单在堆栈的顶部

本文关键字:堆栈 顶部 表单 新表单 确保 | 更新日期: 2023-09-27 18:12:41

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

确保新表单在堆栈的顶部

此方法将检查当前应用程序的OpenForms集合,以查找传入的带有标题的窗口。如果找到它,它将激活窗口,或者让窗口管理器启动一个。

不确定如何对窗口进行z排序,但可以在代码中使用循环,并对每个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);
 }