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

时间:2011-04-08 18:10:54

标签: c# winforms .net-1.1

环境

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

目标

我目前有一个包含3个表单的应用程序。第一种形式就像一个闪屏,但我还没有决定是否允许用户重新打开它。第二种形式是将以第三种形式逐一显示的项目的汇总列表。

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


问题

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


我尝试过的事情

  • 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
  }

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

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

编辑:嗯,我放弃了。 .NET Framework v1.1

中不存在应用程序上下文

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

答案 3 :(得分:0)

是否需要有3个表格?

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