Visual Studio C#表单缺少组件

时间:2009-11-26 02:28:03

标签: visual-studio-2008 forms

我的实验室合作伙伴和我正在使用C#在Visual Studio 2008中开展学校项目。他通过电子邮件向我发送了该项目的最新版本。当我打开它时,我之前创建的一些(但不是全部)表单现在缺少添加到它们的所有组件。但是,当我运行项目时,组件就在那里工作。除边框外,表格上的所有内容都是“隐藏的”。

我是如何访问缺少的组件并编辑表单的? 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);

        }

谢谢。

2 个答案:

答案 0 :(得分:0)

是的,Visual Studio会自动添加InitializeComponent()方法。

顾名思义,表单本身的每个属性都是初始化的,对于您在Designer中放入表单的任何对象都是如此。 您在设计器中编辑的内容最终会自动进入此代码部分。

您永远不应手动编辑此代码。

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

如果InitializeComponent()方法中的代码仍包含

之类的行,则应检查
this.Controls.Add(this.label1);
this.Controls.Add(this.textBox1);

对于应该在表单上的每个控件。

那些线应该远远低于方法的末端。

答案 1 :(得分:0)

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

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

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

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

  4. 下添加