Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关闭windows窗体而不退出整个应用程序 环境 Windows XP SP3 x32 VisualStudio2005标准 设备/平台:带有Windows Mobile/Pocket PC 2003的霍尼韦尔Dolphin 9500 NET Framework 1.1和.NET Compact Framework 1.0 SP3 目标_C#_Winforms_.net 1.1 - Fatal编程技术网

C# 关闭windows窗体而不退出整个应用程序 环境 Windows XP SP3 x32 VisualStudio2005标准 设备/平台:带有Windows Mobile/Pocket PC 2003的霍尼韦尔Dolphin 9500 NET Framework 1.1和.NET Compact Framework 1.0 SP3 目标

C# 关闭windows窗体而不退出整个应用程序 环境 Windows XP SP3 x32 VisualStudio2005标准 设备/平台:带有Windows Mobile/Pocket PC 2003的霍尼韦尔Dolphin 9500 NET Framework 1.1和.NET Compact Framework 1.0 SP3 目标,c#,winforms,.net-1.1,C#,Winforms,.net 1.1,我目前有一份有3张表格的申请表。第一个表单类似于启动屏幕,但我还没有决定是否允许用户重新打开它。第二种形式是将在第三种形式中逐个显示的项目的汇总列表 我想能够打开第一张表格,等待按钮按下。当按下该按钮时,我想打开另一个窗体并处理第一个窗体。一旦在第二个屏幕的列表框中选择了一个项目,我想显示第三个表单,并可能处理第二个表单。用户还需要能够重新打开第二个表单,以选择要在第三个表单上显示的另一项。尽管如此,我可能不想处理第二种形式。然而,内存是这个设备上的一个问题(存储和系统内存之间共享64MB),因

我目前有一份有3张表格的申请表。第一个表单类似于启动屏幕,但我还没有决定是否允许用户重新打开它。第二种形式是将在第三种形式中逐个显示的项目的汇总列表

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


问题 您可能可以通过标题猜到这一点,但当我关闭/处置我的第一个表单时,整个应用程序将关闭。现在我已经读了一点这方面的内容,我意识到这与以下行有关:Application.Run(newform1());或者随便我的名字


我尝试过的事情
  • this.Dispose()-关闭整个应用程序
  • this.Close()-关闭整个应用程序
  • 我还看到很多人推荐一个实例化他们的表单(formf1=newmyform();),显示它(.show();),然后使用Application.Run();没有争论。当我尝试此操作时,我得到“没有重载方法'Run'接受'0'参数”
  • ApplicationContext在.NET Framework的1.1版中不存在

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

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

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

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


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

您可以使用“主”窗体调用Application.Run(),这仍然允许应用程序在窗体关闭时正确关闭,但在显示启动屏幕时将其隐藏(Visible=false),或仅在启动屏幕上方显示启动屏幕。

是否需要有3个窗体


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

Hmm…我没有想到这一点。在尝试ApplicationContext对象之前,我会先尝试一下!谢谢我觉得这是一个愚蠢的问题,但是如果我不是居住在有主方法的表单中,我将如何访问隐藏的表单来关闭它?再次感谢。好吧,这真的取决于你。无论如何,Rich的建议听起来也不错。拥有3个表单是创建应用程序的一种完全可以接受的方式。@Fantius是的,我同意。只是为他的问题提出另一种可能的解决方案。我会“显示”Main()函数中的其他形式吗?i、 这样做只会给我一张空白表格。我认为现在是我声明我是一个非常绿色的程序员的好时机,特别是在这个环境中。感谢您迄今为止的帮助/反馈。我目前还没有坐在IDE上,但是您需要在构建并隐藏它之后执行
Application.Run(mainform)
。Application.Run启动一个消息循环,因此您的代码将停留在那里,而不会进入初始屏幕。您可以从mainform加载事件启动启动屏幕。或者看看项目属性页面上的应用程序框架设置,我相信你可以在那里设置一个splashscreen。我想我可能做错了一件事:我的主要方法是在我的“splashscreen”表单中,因为这是我在这个项目中首先创建的表单。我的Main()函数是否应该/是否可以驻留在某个“驱动程序”类/窗体中,以便不将其绑定到可能正在打开/关闭的窗体?再次感谢您的持续帮助。由于主要方法是静态的,所以它在哪里并不重要,尽管将它放在“Program.cs”文件中是传统的做法。谢谢这就是我错过的部分!
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
  }