好的,这是我的designer.cs代码
for (int i = 0; i < textBoxes.Length; i++)
{
textBoxes[i] = new System.Windows.Forms.TextBox();
this.textBoxes[i].Location = new System.Drawing.Point(90, 50 + i * 20);
this.textBoxes[i].Name = "textBox" + i;
this.textBoxes[i].Size = new System.Drawing.Size(100, 20);
this.textBoxes[i].TabIndex = i + 1;
this.Controls.Add(textBoxes[i]);
}
这是Windows生成代码
下面的编辑代码private System.Windows.Forms.TextBox[] textBoxes = new System.Windows.Forms.TextBox[5];
我删除了与我的任何文本框相关的任何代码。
相反,当我进入设计视图时,它会给我这个错误:
Games MoreGames.Designer.cs Line:32 Column:1
该程序可以运行,但为什么它不能让我访问设计师,所以我可以移动东西?
答案 0 :(得分:1)
您无法编辑designer.cs文件。或者更确切地说,您可以编辑文件,但每次设计人员需要重新生成文件时,您所做的任何更改都将被覆盖,文件中的某些内容将阻止可视化设计器正确呈现您的表单。这是设计的。
您应该做的是将代码放在表单的构造函数中,紧跟调用InitializeComponent()
方法之后。新的控件不会显示在屏幕上供您拖动,但是当您实际运行程序时它们会在那里。
此外,听起来你真正需要的是更多数据驱动的东西,比如FlowLayoutPanel,你可以在运行时添加和删除控件。
答案 1 :(得分:1)
正如Joel所说,您应该将该代码放在构造函数中,遵循MoreGames.cs文件中的InitializeComponent()
方法(不能编辑的MoreGames.Designer.cs)但您可能还想添加以下内容:
textboxes[i].Parent = this;
这将告诉您的每个文本框表单是否是父文件。
表单的基本命名空间如下所示:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private System.Windows.Forms.TextBox[] textBoxes = new System.Windows.Forms.TextBox[5];
public Form1()
{
InitializeComponent();
for (int i = 0; i < textBoxes.Length; i++)
{
textBoxes[i] = new System.Windows.Forms.TextBox();
this.textBoxes[i].Location = new System.Drawing.Point(90, 50 + i * 20);
this.textBoxes[i].Name = "textBox" + i;
this.textBoxes[i].Size = new System.Drawing.Size(100, 20);
this.textBoxes[i].TabIndex = i + 1;
this.textBoxes[i].Parent = this;
this.Controls.Add(textBoxes[i]);
}
}
}
}