动态创建控件

我想知道c#winform中是否可行。

按下按钮时创建控件并将其放在给定位置。

我认为这是可能的

private TextBox txtBox = new TextBox(); private Button btnAdd = new Button(); private ListBox lstBox = new ListBox(); private CheckBox chkBox = new CheckBox(); private Label lblCount = new Label(); 

但问题在于按下按钮时会创建相同的名称控件。如何避免这种情况

什么da ……..我写了,并没有exception我期待它因为控件已经包含btnAdd而不是很多按钮创建你想要的许多。 访问它们将是问题,但它将通过@drachenstern方法正确解决?

  private void button1_Click_1(object sender, EventArgs e) { Button btnAdd = new Button(); btnAdd.BackColor = Color.Gray; btnAdd.Text = "Add"; btnAdd.Location = new System.Drawing.Point(90, 25+i); btnAdd.Size = new System.Drawing.Size(50, 25); this.Controls.Add(btnAdd); i = i + 10; } 

你可以尝试我在这里发布的解决方案。 它将在构造函数中动态创建5个按钮。 只需将代码移动到按钮单击事件,它就应该动态添加按钮并注册Click事件。

 int currentNamingNumber = 0; txtBox.Name = "txtBox" + currentNamingNumber++; 

冲洗,重复。

为每个元素提供唯一的数字名称,允许您找出已创建的元素数量(请注意,您不希望减少以跟踪所有创建的对象,因为这样您可以创建两个具有相同名称的元素)。

我不认为你可以将你想要的名字传递给新function,但你可以在创建它之后始终设置名称。

这听起来像是在寻找List