我有很多形式的VisualBasic项目,其中一个是form1.With每当调用initializecimponent方法时,VS停止响应,我必须使用taskmgr结束它。该bug在form1.designer.vb中,因为我我能够在designer中查看和编辑其他表单和用户控件。很奇怪的是,独立的exe在IDE之外成功运行。我也尝试将表单添加到另一个项目中,该项目也崩溃了。无论何时我构建/调试/查看在设计器中的form1,我一个接一个地得到两个对话框:VS2010已经停止工作,VS2010正在重启(但它永远不会!)
答案 0 :(得分:2)
创建表单的副本,并开始删除表单的一部分,直到它工作。你删除的最后一件事是失败的。您必须通过删除每个控件的三个部分来手动执行此操作:
'
'LeftLabel
'
Me.LeftLabel.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.LeftLabel.AutoSize = True
Me.LeftLabel.Location = New System.Drawing.Point(3, 3)
Me.LeftLabel.Name = "LeftLabel"
Me.LeftLabel.Size = New System.Drawing.Size(39, 13)
Me.LeftLabel.TabIndex = 1
Me.LeftLabel.Text = "Label2"
您还需要删除对该控件的任何引用,例如将其添加到容器中。
一次执行一个控件,然后构建项目并打开表单。如果表单未打开,请重新启动visual studio并执行下一个控件。如果它打开了,那么你删除的最后一件事就是罪魁祸首。
答案 1 :(得分:0)
对于面临同样问题的程序员,这是解决方案: 确保您的用户控件不会在自己内部创建自己的实例。即使您的程序可能没有任何错误地运行,VS设计器也会崩溃。这样的代码就是一个例子:
Public class controlx
public sub new()
dim x as new controlx
End sub
End class
你可能认为这是一个愚蠢的逻辑错误,但是这样的错误可能非常令人沮丧和耗时。总是将你的代码分解为更小的单位,以便像Brian所说的那样可以管理。