我有一个.Net winforms(C#)应用程序及其主要表单(表单A),它打开不同的其他表单作为非模态(这样用户可以独立处理主表单或子表单)
在某些情况下,子表单(表单B)会打开另一个弹出表单(表单C)。当这个弹出窗口关闭时,来自另一个应用程序的另一个窗口(例如,色彩,Outlook,VS)进入我的主窗体和子窗体之间。通常这个窗口就是我主窗口下面的窗口。
在关闭表单之前,z顺序是:Outlook,表单A,表单B,表单C
关闭表单c后,z顺序更改为:表单A,Outlook,表单B
我不想特意BringToFront()我的表格A,因为在特定时间可能有很多表格B的实例,我不想在表格B上制作表格A. #39; S
知道什么可能导致这种行为吗?有没有办法确保我的所有应用程序的表单都高于其他窗口?
答案 0 :(得分:1)
您可以使子窗体由打开它们的窗体所拥有。这将保持相对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);
}
}
这具有副作用,即当表单的所有者关闭/最小化时,其拥有的表单也将关闭/最小化。