C# Winforms动态地创建了标签位置



我有一堆动态添加的控件,当用户单击添加用户按钮时,这些控件会逐行添加。我希望在页面加载时有一个标签,并且我希望每次单击添加用户按钮时(在每行文本框下(时相同的标签向下移动。现在它在加载时在那里,当用户第一次单击按钮时它会向下移动,但之后它只是停留。这是我的代码:

全局变量:

Label Savelbl = new Label();    
int LabelX = 15;
int LabelY = 110;       
int spacelbl = 15;

页面加载:

Savelbl.Location = new Point(LabelX, LabelY);
Savelbl.Name = "Savelbl";
Savelbl.Text = "Please click 'save' to save your changes";
CaeUsersPanel.Controls.Add(Savelbl);

添加用户按钮:

private void CAEAddUserbtn_Click(object sender, EventArgs e)
{
var i = UsernameTextBoxes.Count + 1; // this is a list of the added textboxes
ADDUserInfo(i); //method which adds the dynamically created textboxes
Savelbl.Location = new Point(LabelX, LabelY + spacelbl);
}

删除用户按钮(单击此按钮时标签应向上移动(:

private void Remove_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("Are you sure you want delete this user?  n Deleting users may break workflows", "Delete", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
int idx = RemoveButtons.IndexOf((Button)sender);
// Remove button
RemoveButtons[idx].Dispose();
RemoveButtons.RemoveAt(idx);
// Remove textbox
UsernameTextBoxes[idx + 1].Dispose();
UsernameTextBoxes.RemoveAt(idx + 1);
//Shift controls up
for (int i = idx; i < RemoveButtons.Count; i++)
{
UsernameTextBoxes[i + 1].Top -= SpaceDelta;
}
space -= SpaceDelta;
Savelbl.Location = new Point(LabelX, LabelY - spacelbl);
}
}

你永远不会更新 LabelX 和 LabelY。

LabelX = Savelbl.Location.X
LabelY = Savelbl.Location.Y
Savelbl.Location = new Point(LabelX, LabelY - spacelbl);

你也可以摆脱这些变量可能...

最新更新