动态按钮和创建文本框
本文关键字:文本 创建 按钮 动态 | 更新日期: 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);
}
通过这种方式,您不仅可以添加新的文本框,而且可以在需要时随时通过每个按钮轻松确定创建的文本框。