如何将“所有表单”带到前台(WindowsMo​​bile / C#)

时间:2010-06-28 15:31:32

标签: c# windows mobile

(C#/ WindowsMo​​bile 6)

让我们使用3个STATIC表单的应用程序:Form1,Form2,Form3,其中Form1通过调用Form2.Show()打开Form2,Form2对Form3执行相同的操作。 Form2和Form3有一个“退出”按钮,只是隐藏表单(不是“关闭”,只是隐藏)。

因此,我们执行以下步骤:

  • 打开应用程序;
  • 单击Form1上的“Form2”按钮转到Form2;
  • 单击Form2上的“Form3”按钮转到Form3;
  • 打开文件资源管理器,点击它的文件“重新打开”应用程序。 Form3出现;
  • 通过单击Form3上的“退出”按钮隐藏Form3(this.Hide())。这就是问题:文件浏览器显示为Form2。

每次隐藏表单时,我都不想调用“callingform”.Show()。这“工作”,但文件浏览器屏幕出现在“this.Hide()”之后和“callinform.Show()”之前,我需要“控制”谁在调用谁。

如何解决这个问题?有没有办法以所出现的相同顺序将所有应用程序的表单带到前台?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可能需要对此进行一些调查,但是我可以尝试查看Application.Forms []集合。

也许有人可以确认或否认这一点,但我认为通常,Application.OpenForms [0]将是主要/初始形式,后续表格外观在Application.OpenForms [1],Application.OpenForms [2]等。 ..

因此,您可以尝试向后浏览此Forms集合。

类似(或变体),

public void BringLastOpenedFormToFront()
{
    if(Application.OpenForms.Count > 0)
    {
       Form form = Application.OpenForms[Application.OpenForms.Count - 1];
       BringToFront(form);  // your bring to front method.
    }
}

这将允许您确保出现的最后一个表单被带到前面并立即对用户可见。如果您需要任何澄清,请与我们联系。

MSDN链接: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.openforms.aspx

答案 1 :(得分:0)

真的没有办法。您可以实现一种以与第一个答案类似的方式存储表单的方法,但是当您切换时需要这样做:

"callingform".BringToFront();
"callingform".Show();

这会将所有表单放在资源管理器之前。