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

Let*_*ode -2 c# forms object startup

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

Application.Run(new MyForm());
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢!

God*_*eke 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.
}
Run Code Online (Sandbox Code Playgroud)

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

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