从点击按钮存储循环值?

Storing loop values from click button?

我目前正在使用循环在我的 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);
        }
        }

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

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也是可以的,它依赖于规范,赋值运算符的return值是已经赋值的值。