我的实验室合作伙伴和我正在使用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);
}
谢谢。
答案 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,当您添加新控件时,此方法会被修改以添加新控件。以下是备份现有文件后可以尝试的内容
检查InitializeComponent是否包含表单中所有控件的代码。
清理现有代码并重新编译项目。
在解决方案资源管理器中,确保您的designer.cs直接显示在.cs下,而不是任何其他文件(例如.resx等)下。例如,如果您的设计器文件被意外添加到.resx文件下,您可以尝试从项目中删除设计器文件(在进行备份后),然后再次添加。它应该在.cs