C# 另一个进程的窗口位于我的两个窗体之间
我有一个.Net winforms(C#)应用程序及其主窗体(窗体a),它以非模式方式打开其他不同窗体(以便用户可以独立处理主窗体或子窗体) 在某些情况下,子表单(表单B)会打开另一个弹出表单(表单C)。当此弹出窗口关闭时,另一个应用程序(如chrome、outlook、VS)的另一个窗口会出现在我的主窗体和子窗体之间。通常,另一个窗口就是我的主窗口下方的窗口 在关闭表单之前,z顺序为:Outlook、表单A、表单B、表单C 关闭表格c后,z顺序更改为:表格A、Outlook、表格B 我不想特别地将我的表单A引入到表单A中,因为在给定的时间内可能会有很多表单B的实例,我不想将表单A置于表单B之上C# 另一个进程的窗口位于我的两个窗体之间,c#,winforms,z-order,C#,Winforms,Z Order,我有一个.Net winforms(C#)应用程序及其主窗体(窗体a),它以非模式方式打开其他不同窗体(以便用户可以独立处理主窗体或子窗体) 在某些情况下,子表单(表单B)会打开另一个弹出表单(表单C)。当此弹出窗口关闭时,另一个应用程序(如chrome、outlook、VS)的另一个窗口会出现在我的主窗体和子窗体之间。通常,另一个窗口就是我的主窗口下方的窗口 在关闭表单之前,z顺序为:Outlook、表单A、表单B、表单C 关闭表格c后,z顺序更改为:表格A、Outlook、表格B 我不想特别
知道是什么导致了这种行为吗?有没有办法确保我的应用程序的所有窗体都位于其他窗口之上?您可以使子窗体归打开它们的窗体所有。这将保持相对的z顺序
public partial class FormA : Form
{
private void button1_Click(object sender, EventArgs e)
{
FormB f = new FormB();
f.Show(this);
}
}
这样做的副作用是,当表单的所有者关闭/最小化时,其所拥有的表单也将关闭/最小化 这还有一个副作用,如果我打开另一个表单B实例,我就无法访问前一个表单B实例。我需要随时访问所有表单:(@Anuruddha,这里没有任何内容阻止您访问以前的实例。唯一需要注意的是所有者窗口(本例中为FormA)无法覆盖所有者拥有的窗口。提供了所有者拥有的窗口关系的良好摘要;它适用于WPF窗口,但该列表也适用于WinForm窗口。
public partial class FormB : Form
{
private void button1_Click(object sender, EventArgs e)
{
FormC f = new FormC();
f.Show(this.Owner);
}
}