如何计算for循环C#中的迭代次数

时间:2017-10-28 08:27:29

标签: c# winforms

我试图计算循环迭代并使用LABEL将其显示给用户。试过很多解决方案,但没有运气。 对此有何建议? 提前致谢! 试过这个。

for (int x = 0; x < DataGridView.Rows.Count; x++)
        {                
            CountLabel.Text = x.ToString();
        }

3 个答案:

答案 0 :(得分:2)

for循环有一个内置计数器 - 例如:

for(int i=0; i <= maxValue; i++)
{ 
    // do stuff

    yourLabel.Text = i.ToString();
    yourLabel.Update();
}

也许你指的是一个foreach循环(foreach(var x in y))。 在这种情况下,您需要自己添加一个计数器:

var loopCounter = 0;
foreach(var x in y)
{
    // do stuff

    yourLabel.Text = loopCounter.ToString();
    yourLabel.Update();
    loopCounter++;
}

答案 1 :(得分:0)

在for循环之外声明索引,以便之后可以访问它。

int i = 0;
for (i = 0 ; i < smsCount ; i++)
{
    //Send SMS
}
//You can access i here

如果您使用的是foreach循环

int count = 0;
foreach (SMS sms in SMSlist)
{
    //Send SMS
    count++;
}

您可以访问i并在循环外计数。如果需要从其他方法或类访问它们,您甚至可以在全局范围内声明它们。

答案 2 :(得分:0)

var loopcounter=0;
foreach(var x in y){
      loopcounter++;
      label.text=loopcounter.toString();     
      //delay();
}

您应该在进度处理程序或单独的线程中编写它。由于循环的速度比标签可以显示文本快得多。因此,如果您没有延迟直接执行此操作,您可能无法获得所需的效果。

您还可以使用Progress Bar显示发送短信的进度。

private void button1_Click(object sender, EventArgs e)
        {
            int i;

            progressBar1.Minimum = 0;
            progressBar1.Maximum = 200;

            for (i = 0; i <= 200; i++)
            {
                progressBar1.Value = i;
            }

        }