动态按钮和创建文本框

本文关键字:文本 创建 按钮 动态 | 更新日期: 2023-09-27 18:22:17

我在c#表单上有一个文本框和按钮,用户可以输入数字。我创建了一个用户想要的标签,每个标签都有一个按钮。如果我点击这些按钮,我想创建文本框,但如果用户继续点击,我想创造更多的文本框。

Button[] Btn= new Button[10];
for (int i = 0; i < labelNumber; i++)
{
    Btn[i] = new Button();
    Btn[i].Text = "Add";
    Btn[i].Location = new Point(40, 100 + i * 29);
    Btn[i].Size = new Size(50,20);
    this.Controls.Add(Btn[i]);
    Btn[i].Click += new EventHandler(addNewTextbox); 
}

关于上述代码;例如如果labelNumber == 3,那么我有3个标签和3个按钮,如果我点击添加按钮,我想在这个标签附近创建文本框。

private void addNewTextbox(object sender, EventArgs e)
{
    TextBox[] dynamicTextbox = new TextBox[10];
    Button dinamikButon = (sender as Button);
    int yLocation = (dinamikButon.Location.Y - 100) / 29;
    //int xLocation =  dinamikButon.Location.X - 100;
    dynamicTextbox[yLocation] = new TextBox();
    dynamicTextbox[yLocation].Location = new Point(100, 100 + yLocation * 29);
    dynamicTextbox[yLocation].Size = new Size(40, 50);
    this.Controls.Add(dynamicTextbox[yLocation]);
}

这里我改变了文本框y的坐标,但我不能为X。如果我改变这个

dynamicTextbox[yLocation].Location = new Point(100*x, 100 + yLocation * 29);
x++;

它在某种程度上等于所有这些。

Label1 Button1
Label2 Button2
Label3 Button3

如果我点击Button1 4次,它必须在label1旁边创建4个文本框。如果我点击Button2两次,它必须在label2旁边创建两个文本框请帮助我。

动态按钮和创建文本框

最简单的方法是在按钮的Tag属性中保留一个包含创建的文本框的列表,如

private void addNewTextbox(object sender, EventArgs e)
{
    var button = (Button)sender;
    var textBoxes = button.Tag as List<TextBox>;
    if (textBoxes == null)
        button.Tag = textBoxes = new List<TextBox>();
    var textBox = new TextBox();
    textBoxes.Add(textBox);
    textBox.Location = new Point(100 * textBoxes.Count, button.Top);
    textbox.Size = new Size(40, 50);
    this.Controls.Add(textBox);
}

通过这种方式,您不仅可以添加新的文本框,而且可以在需要时随时通过每个按钮轻松确定创建的文本框。