首页 文章

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

提问于
浏览
0

(C#/ WindowsMobile 6)

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

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

  • 打开申请表;

  • 单击Form1上的"Form2"按钮转到Form2;

  • 单击Form2上的"Form3"按钮转到Form3;

  • 通过单击它的文件打开文件资源管理器和"re-open"应用程序 . 表格3出现;

  • 通过单击Form3上的"Exit"按钮隐藏Form3(this.Hide()) . 这就是问题:文件浏览器出现而不是Form2 .

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

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

提前致谢 .

2 回答

  • 0

    真的没有办法 . 您可以实现一种以与第一个答案类似的方式存储表单的方法,但是当您切换时,您需要执行以下操作:

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

    这会将所有表单放在Explorer之前 .

  • 0

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

    也许有人可以确认或否认这一点,但我认为通常,Application.OpenForms [0]将是主要/初始形式,后续的Form外观在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

相关问题