从单击按钮存储循环值?



我目前正在使用循环在我的窗口窗体上创建新的用户控件。我希望它在每次 Y 递增 125 的新位置添加此用户控件的单个实例。

我对 C# 和 Visual Studio 很陌生,所以在下面的代码中,每次我按"add"事件时都会复制第一个实例。我只是想知道是否有人可以提供一些帮助,说明从第一个实例中存储"y"的值以第二次传递到循环中的最佳方法?或者如果有更好的方法可以做到这一点。

提前感谢!

private void btnAddRow_Click(object sender, EventArgs e)
{
int y = 175;
for (int i = 0; i <= 0; i++)
{
NewSkillRow nSkill = new NewSkillRow();
nSkill.Location = new Point(75, y += 125);
Controls.Add(nSkill);
btnAddRow.Click += new EventHandler(btnAddRow_Click);
}
}

y变量设置为类的本地变量(您也可以使用默认值对其进行初始化):

private int y = 175;

每次单击按钮时都会调用事件处理程序。因此,请从那里删除y的初始化。

private void btnAddRow_Click(object sender, EventArgs e)
{
var nSkill = new NewSkillRow();
nSkill.Location = new Point(75, y += 125);
Controls.Add(nSkill);
}

请注意,事件处理程序附件已删除。从处理程序中重新附加事件处理程序将导致每次单击按钮时调用次数增加。

循环很好,但不是必需的:对于一次迭代,您也可以省略它。

使用y += 125也是可以的,它依赖于赋值运算符的返回值是已赋值的规范。

最新更新