2009-11-26 100 views
0

我的实验室合作伙伴和我正在使用C#编写Visual Studio 2008中的学校项目。他给我发了这个项目的最新版本。当我打开它时,我以前创建的一些(但不是全部)表单现在缺少添加到它们的所有组件。但是,当我运行该项目时,组件在那里并且工作。除边界外,表格上的所有内容都是“隐藏的”。Visual Studio C#表单缺失组件

任何想法如何访问缺失的组件和编辑表单? ShowAllForms处于活动状态。

它似乎有一些类似于下面的代码已被添加到每个表单(但不是我)的.cs代码。我在互联网上的其他地方阅读过,这个代码可以由Visual Studios自动生成。这可能是问题吗?如果是这样,Visual Studios为什么将它添加到我的代码中?

private void InitializeComponent() 
     { 
      this.SuspendLayout(); 
      // 
      // VideoPoker 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
      this.ClientSize = new System.Drawing.Size(804, 549); 
      this.Name = "VideoPoker"; 
      this.Load += new System.EventHandler(this.VideoPoker_Load_1); 
      this.ResumeLayout(false); 

     } 

谢谢。

回答

0

是Visual Studio自动添加InitializeComponent()方法。按照名称的含义,表单本身的每个属性都被初始化,并且对于您在Designer中放入表单的任何对象都是相同的。 假设您在设计器中编辑最终会自动进入此代码部分。

您不应该手动编辑此代码。

关于缺少的控件,我想出于某种原因,代码被删除,将它们放入窗体的ControlCollection中,该窗体通过属性Form.Controls访问。

您应该检查,如果在InitializeComponent()方法的代码仍然包含像

this.Controls.Add(this.label1); 
this.Controls.Add(this.textBox1); 

线,其被认为是在表格上的每个控制。

那些行应该远离方法结束。

+0

我不会说永远不要修改代码手册,只是确保你知道你在做什么,如果你这样做。 – 2010-01-25 21:14:38

0

Visual Studio通常会在.Designer.cs下添加InitializeComponent方法,当您添加新控件时,会修改此方法以添加新控件。以下是在备份现有文件后可以尝试的内容

  1. 检查InitializeComponent是否包含表单中所有控件的代码。

  2. 清理现有代码并重新编译项目。

  3. 在解决方案资源管理器中,确保您的designer.cs直接出现在.cs下,而不是其他任何文件(如.resx等)下。例如,如果您的设计器文件被意外添加到.resx文件下,您可以尝试从项目中移除设计器文件(在进行备份后),然后再次添加它。它应该被添加到.cs