从点击按钮存储循环值?

时间:2017-04-24 14:27:38

标签: c# winforms loops user-controls

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

1 个答案:

答案 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也没关系,它依赖于指定赋值运算符的返回值是已赋值的值。