C# Visual Studio 2012在应用程序未运行时打开窗体

C# Visual Studio 2012在应用程序未运行时打开窗体,c#,winforms,visual-studio-2012,C#,Winforms,Visual Studio 2012,我对VS 2012有一个非常奇怪的问题。在winform应用程序的设计阶段,如果我打开一个特定的表单,登录表单会出现在屏幕上,不像在designer中那样,而是好像应用程序已经启动一样 我可以在设计时打开登录表单 但当我打开另一个名为“打印”的表单时,就会发生这种情况 显然,我试图打开的表单没有在设计器中打开,相反,应用程序似乎已经启动。如果通过关闭表单与表单交互,则VisualStudio将崩溃。在任务管理器中,进程也是Devenv.exe 我尝试过清除obj和bin文件夹,但没有成功。如果

我对VS 2012有一个非常奇怪的问题。在winform应用程序的设计阶段,如果我打开一个特定的表单,登录表单会出现在屏幕上,不像在designer中那样,而是好像应用程序已经启动一样

我可以在设计时打开登录表单

但当我打开另一个名为“打印”的表单时,就会发生这种情况

显然,我试图打开的表单没有在设计器中打开,相反,应用程序似乎已经启动。如果通过关闭表单与表单交互,则VisualStudio将崩溃。在任务管理器中,进程也是Devenv.exe


我尝试过清除obj和bin文件夹,但没有成功。

如果第二种表单的
\u Load
-方法中有一些初始值设定项,例如要求登录,那么该操作将被执行

您可以在2的'u Load'中检查以下3点。表单,如果出现任何错误,请不要执行“\u Load”中的代码

this.GetService(typeof(IDesignerHost)) !=null

System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime

System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv"

如果您不希望任何代码更改或进程名称检查,只需将GUI相关代码从构造函数移动到显示的事件处理程序中。

非常奇怪。尝试在登录表单中添加一些代码,以便在打开时显示调用堆栈,看看它来自何处?您正在尝试打开Print.cs表单,VS将启动程序?这是你的问题吗?@SonerGönül是的,就是这个问题。它在设计login.cs时工作正常,仅在设计打印时工作正常。cs@RyanAmies:打印表单的代码是否包含一些显示登录表单的代码?结果是,
Print.cs
继承自另一个表单,该表单有代码启动
login.cs