2011-04-27 71 views
1

我正在使用Visual Studio C#,并且陷入了使新窗体成为主窗体的局面。我需要应用程序在关闭时关闭,并且我想关闭以前的表单而不关闭应用程序。如何设置窗体作为应用程序的主窗体? C#

当前的尝试(无效):

FormClass newForm = new FormClass(); 
newForm.Show() 

previousForm.Close() 

回答

3

首先理解为什么应用程序退出。从documentation of Application.Run(Form)

此方法添加的事件处理程序 用于封闭 事件中MainForm的参数。事件处理程序调用 ExitThread来清理 应用程序。

如果你可以逃脱只是隐藏它,而不是关闭它

FormClass newForm = new FormClass(); 
newForm.Show(); 

previousForm.Hide(); 

如果您需要将其关闭(或宁可)

阿尔特的Program.cs。为了防止终止您可以通过运行(表格)的添加事件处理程序,使用运行(过载),不添加这样的处理程序:

var form = new Form1(); 
form.Show(); 
Application.Run(); // The application will not exit when form is closed 

但在这种情况下,您将需要调用的应用。在关闭newForm时(或在您想要退出的任何其他情况下),退出()自己。

+0

不错 - 我从来没有意识到Application.Run(Form)实际上注册了一个事件处理程序。 – Justin 2011-04-27 17:32:13

+0

这是我们不常看的那些东西之一,对吧? :) – 2011-04-27 17:34:17

-1

如果您的意图是使用类似splashscreen的东西,请尝试在后台线程上调用第一个表单,如果完成,它们将在任务完成后中止线程。 “第一”表格将被关闭。

或者,只需关闭“splashscreen窗体”,结束后台线程。

它有帮助吗?

+1

这是一个可怕的想法。你几乎不应该放弃线程,所有的用户界面代码都应该在一个线程上。 – Justin 2011-04-27 17:22:44

+0

嗯,我不认为这是一个可怕的想法。几个splashscreen样本使用这种技术。而且,通过这个问题,我真的不知道这是否会成为druttka意图的好办法。我只是想法如何完成任务。 – marcoaoteixeira 2011-04-27 17:28:44

相关问题