我有一个Windows窗体项目,似乎在设计视图中丢失了所有控件。当我运行项目时,控件按原样显示。对于此表单,只有Visual Studio中的设计视图被破坏,所有其他形式都是相同的。
我尝试重新打开解决方案并重新打开文件无济于事。 我也尝试过清洁和重建解决方案无济于事。 我做了一个描述问题的video screen capture
接下来我应该尝试什么?
答案 0 :(得分:3)
在VS 2017中,如果从解决方案中排除yourForm.Designer.cs,那么请重新添加它以解决问题。
答案 1 :(得分:2)
可能你引用了同一个解决方案中定义的一些usercontrol,但在不同的项目中,改变了什么,必须通过简单的Solution / Rebuild All来解决。 如果没有,那么它可能是构建问题(混合x86和x64构建)
答案 2 :(得分:2)
有类似的问题(唯一不同的是,当我在调试模式下运行项目一两次时,控件是可见的,那么它们也已经消失了。)
我不得不手动重新添加在designer.cs文件中丢失的代码。
这就是我的initializeComponent()方法已经简化为:
private void InitializeComponent()
{
this.SuspendLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
我不得不重新添加每个组件代码块,一次一个,就像这一个 - listBox1:
private void InitializeComponent()
{
this.listBox1 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// listBox1
//
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(10, 10);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(133, 43);
this.listBox1.TabIndex = 5;
//
// Form1
//
this.ClientSize = new System.Drawing.Size(550, 430);
this.Controls.Add(this.listBox1);
this.Name = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
当然,我不知道调色板坐标需要什么。所以,我在代码中为x,y放了10,10。然后切换到设计师视图。对照物放在左上角。在Visual Studio破坏我的夜晚之前,我使用设计师将它放回原处的位置。
确保在InitializeComponent()方法之后找到对控件的引用:
#endregion
private System.Windows.Forms.ListBox listBox1;
还有一个提示:如果您不知道designer.cs类正在为您的特定控件寻找什么属性,只需从工具箱中创建一个新属性,然后返回代码以查看Visual Studio自动执行的操作。为该控件类型生成。
快乐的小道,并在接下来的一小时亲吻再见:)
答案 3 :(得分:1)
看起来更像是在运行时调用另一个表单 您应该捕获代码以了解应用程序的行为 (如表单代码和program.cs代码)
答案 4 :(得分:0)
检查并查看问题是否是未正确嵌套的designer.cs。它必须位于.cs文件下。如果没有,请右键单击并排除项目'与表单关联的所有文件,然后将表单(.cs)重新添加回项目。这将解决问题。
答案 5 :(得分:0)