C#除了main之外还以另一种形式设置启动表单

时间:2014-10-22 23:31:23

标签: c# forms object startup

除了来自main的program.cs之外,是否可以在另一个cs文件中设置启动表单? 从main:

在program.cs中将表单设置为启动对象的代码
Application.Run(new MyForm());

因此,例如,是否可以将Form2中的启动对象设置为Form2,而Form2不是启动对象(但希望如此)>?

要具体:我想以编程方式在启动时显示form2,而Form1被设置为启动对象。我需要将该代码放在form2本身。所以我不能简单地通过Form1打开Form2。

提前致谢!

2 个答案:

答案 0 :(得分:5)

不是将启动逻辑放在表单中,而是由ApplicationContext提供更好的服务。

http://msdn.microsoft.com/en-us/library/system.windows.forms.applicationcontext(v=vs.110).aspx

不是启动表单,而是使用[STAThread] Main()函数创建一个类,并将该类作为启动对象。在该类中,您可以进行一些设置(例如,验证密钥日志记录功能是否存在),然后

//ExampleContext is defined as ExampleContext : ApplicationContext
using (ExampleContext exampleContext = new ExampleContext()) 
{
   Application.Run(exampleContext); //The context handles the login and main forms.
}

在应用程序上下文中,您可以自由打开和关闭表单,并且可以维护一个能够跟踪它们的全局状态。关闭表单不会关闭您的应用程序,允许您有多个表单对您的用户显示为“顶级”。

要退出应用程序,请让您的上下文调用Application.Exit()而不是关闭“主”表单(因为没有这样的动物)。

答案 1 :(得分:0)

根据您的评论,听起来您想要做的只是创建并展示新表格。您需要做的就是将这样的代码放在Button_Click事件中:

Form2 newForm2 = new Form2();
newForm2.Show();