【发布时间】:2017-06-26 15:09:38
【问题描述】:
我有一个添加用户按钮,当用户单击它时,它会动态添加一个删除按钮和一个用户名文本框。用户可以随意点击按钮多次,控件将继续添加。
我在使用动态创建的删除按钮时遇到问题。它应该删除它本身和它旁边的用户名文本框。相反,它将始终删除添加的第一行。此外,当您单击删除后单击添加新用户时,它不会自动填充空白空间 - 它将新文本框和按钮移动到底线。
这是我的代码:
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 我有一个问题,当您单击添加的按钮时,它应该自行删除?
-
添加用户按钮将始终存在。当您单击添加时,它会创建一个新的文本框和按钮,当您单击新按钮时,它应该删除自身和新的文本框。但是添加按钮会一直存在
-
所有这些控件都具有相同的名称。所以按名称删除是行不通的。您可以从 sender 参数中获取对按钮的引用。考虑使用 Tag 属性来存储对文本框的引用。 Controls.Remove() 还不够好,你必须使用 Dispose() 才能真正摆脱控件。
-
为什么不创建文本框和按钮的用户控件。然后你可以处理适当的用户控件,去掉按钮和文本框。