计算循环C中的迭代次数
问题描述:
用于发送短信的winform应用程序。有一个for循环用于批量发送短信。循环在用户单击SEND按钮时开始。我想显示使用LABEL发送给用户的短信号码。任何方式来显示循环的次数或循环继续? 对此有何建议? 在此先感谢! 循环看起来像这样;计算循环C中的迭代次数
for (int x = 0; x < DataGridView.Rows.Count; x++)
{
string number = "";
number = (DataGridView.Rows[x].Cells["Number"].Value).ToString();
message = MessageBodyRichTextBox.Text;
cls.ConnectGSM(Convert.ToInt16(p), number, message);
}
答
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++;
}
答
声明指数成份股之外的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和外循环计数。如果需要从其他方法或类访问它们,甚至可以在全局范围内声明它们。
答
var loopcounter=0;
foreach(var x in y){
loopcounter++;
label.text=loopcounter.toString();
//delay();
}
您应该在进度处理程序或单独的线程中编写此代码。由于循环的速度比标签可以显示文本的速度快得多。因此,如果你没有延迟直接做到这一点,你可能得不到你想要的效果。
OR
你也可以使用一个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;
}
}
查看BackgroundTask的文档。然后,您可以在循环中“报告进度”,然后更新进度处理程序中的标签。 –
为什么你不能使用循环计数器变量?然后用适当的延迟显示标签? –
http://idownvotedbecau.se/noattempt/ – CalC