关闭Windows窗体而不退出整个应用程序

环境

  • Windows XP SP3 x32
  • Visual Studio 2005标准版
  • 设备/平台:采用Windows Mobile / Pocket PC 2003的Honeywell Dolphin 9500
  • .NET Framework 1.1和.NET Compact Framework Framework 1.0 SP3

目标

我目前有3个表格的申请。 第一种forms就像一个启动画面,但我还没有决定是否允许用户重新打开它。 第二种forms是将以第三种forms逐个显示的项目的汇总列表。

我希望能够打开第一个表格并等待按下按钮。 当按下该按钮时,我想打开另一个表格并处理第一个表格。 从第二个屏幕上的列表框中选择一个项目后,我想显示第三个表单并可能处理第二个表单。 用户还需要能够重新打开第二个表单以选择要在第三个表单上显示的另一个项目。 话虽这么说,我可能不想处理第二种forms。 但是,内存在这个设备上是一个问题(存储和系统内存之间共享64MB),因此我希望尽可能地处理事情。


问题

您可以通过标题来猜测,但是当我关闭/处理我的第一个表单时,整个应用程序将关闭。 现在我已经读了一下这个问题,我知道这与这一行有关:Application.Run(new Form1()); 或者我的forms恰好被命名。


我试过的事情

  • this.Dispose() – 关闭整个应用程序
  • this.Close() – 关闭整个应用程序
  • 我还看到多个人推荐一个实例化他们的表单(Form f1 = new MyForm();),show it(.Show();),然后使用Application.Run(); 没有争论。 当我尝试这个时,我得到“没有重载方法’运行’取’0’参数”
  • .NET Framework 1.1版中不存在ApplicationContext

static void Main() { Application.Run(new Welcome()); } private void btnBegin_Click(object sender, EventArgs e) { Form wof = new WorkOrderForm(); wof.Show(); wof.BringToFront(); // Here is where I would like to dispose of the Welcome form } 

您可以使用“main”表单调用Application.Run(),这仍然允许应用程序在表单关闭时正常关闭,但在显示启动屏幕时隐藏它(Visible = false),或者只显示启动画面在它的上面。

创建一个传递给Application.Run()的隐藏表单。 当您决定应用程序关闭时,请关闭该隐藏的表单。

我一直在回答自己的问题……

我在MSDN论坛上发布了这个相同的问题,并被告知使用ApplicationContext对象而不是新的Form对象作为Application.Run中的参数。 我现在要试试。 现在我将不予回答。

编辑:好吧,我放弃了。 .NET Framework v1.1中不存在应用程序上下文

编辑2:实际上,似乎它(http://msdn.microsoft.com/en-us/library/system.windows.forms.applicationcontext(VS.71).aspx),但它似乎不存在于Compact Framework版本1.0 SP3。

是否需要有3个表格?

一种方法是以1种forms创建3个面板,只显示活动面板。