Window 另一个进程介于我的两个表单之间

Window of another process comes between my two forms

我有一个 .Net winforms (C#) 应用程序及其主窗体(窗体 A),它以非模态方式打开不同的其他窗体(以便用户可以独立处理主窗体或子窗体)

在某些情况下,子窗体(窗体 B)会打开另一个弹出窗体(窗体 C)。关闭此弹出窗口后,来自另一个应用程序(e.g.chrome、outlook、VS)的另一个 window 出现在我的主窗体和子窗体之间。通常这另一个 window 是在我的主 window.

下面的那个

关闭窗体前,z-order为:Outlook、窗体A、窗体B、窗体C

关闭窗体 c 后,z 顺序更改为:窗体 A、Outlook、窗体 B

我不想专门为我的表单 A 使用 BringToFront(),因为在给定时间可能有很多表单 B 的实例,而且我不想让我的表单 A 覆盖表单 B。

知道什么会导致这种行为吗?有没有办法确保我所有的申请表格都在其他表格之上 windows?

您可以使子窗体由打开它们的窗体拥有。这将保持相对的 z 顺序。

public partial class FormA : Form
    {

    private void button1_Click(object sender, EventArgs e)
        {
        FormB f = new FormB();
        f.Show(this);
        }
    }

public partial class FormB : Form
    {

    private void button1_Click(object sender, EventArgs e)
        {
        FormC f = new FormC();
        f.Show(this.Owner);
        }
    }

这会产生副作用,即当表单的所有者是 closed/minimized 时,其拥有的表单也会 close/minimize。