我目前正在使用循环在Windows窗体上创建新的用户控件。我希望它在一个新的位置添加一个这个用户控件的实例,其中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);
}
}
答案 0 :(得分:1)
将您的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
也没关系,它依赖于指定赋值运算符的返回值是已赋值的值。