我有一个添加用户按钮,当用户点击它时动态添加删除按钮和用户名文本框。用户可以多次点击该按钮,并且控件将继续添加。C#winforms动态创建按钮控件
我无法动态创建删除按钮。它应该删除它本身和旁边的用户名文本框。相反,它会始终删除已添加的顶部行。此外,当您单击添加新用户后,单击删除它不会自动填充空格 - 它将新文本框和按钮移到底线。
这里是我的代码:
private void AddUserbtn_Click_1(object sender, EventArgs e)
{
TextBox[] Username = new TextBox[n];
Button[] Remove = new Button[n];
int UsernameX, UsernameY, RemoveX, RemoveY;
UsernameX = 346;
UsernameY = 45;
RemoveX = 946;
RemoveY = 45;
for (int i = 0; i < n; i++)
{
Username[i] = new TextBox();
Username[i].Size = new Size(233, 26);
Username[i].Location = new Point(UsernameX, UsernameY + space);
Username[i].Font = new Font("Arial", 10);
Username[i].Name = "Username" ;
Remove[i] = new Button();
Remove[i].Location = new Point(RemoveX, RemoveY + space);
Remove[i].Text = "Remove";
Remove[i].Font = new Font("Arial", 10);
Remove[i].Size = new Size(95, 23);
Remove[i].UseVisualStyleBackColor = true;
Remove[i].Click += new EventHandler(Remove_Click);
Remove[i].Name = "Remove";
space += 35;
}
for (int i = 0; i < n; i++)
{
CaeUsersPanel.Controls.Add(Username[i]);
CaeUsersPanel.Controls.Add(Remove[i]);
}
}
private void Remove_Click(object sender, EventArgs e)
{
CaeUsersPanel.Controls.Remove(CaeUsersPanel.Controls[("Username")]);
CaeUsersPanel.Controls.Remove(CaeUsersPanel.Controls[("Remove")]);
}
嗨@Julie我有一个问题,当你点击添加按钮它应该删除自己? – Esperadoce
添加用户按钮将始终在那里。当你点击添加它会创建一个新的文本框和按钮,当你点击新的按钮时,它应该删除它自己和新的文本框。但添加按钮将始终存在 – Julie
所有这些控件都具有相同的名称。所以按名称删除不起作用。您可以从* sender *参数获得对该按钮的引用。考虑使用Tag属性来存储对文本框的引用。 Controls.Remove()不够好,你*必须*使用Dispose()来真正摆脱控制。 –