如何选择何时在列表框中循环
本文关键字:列表 循环 何时 何选择 选择 | 更新日期: 2023-09-27 17:58:25
我有一个项目列表框,我想逐一查看,每个项目都应该打印在一个消息框中。默认情况下,当它到达列表框的末尾时,我想停止。但如果我选中复选框"循环列表[x]",我希望它继续,并在它到达底部时重新开始。我该怎么做?
这是我现在要循环使用的代码。
int i = 0;
i = listBox1.SelectedIndex;
i = i + 1;
if (i > listBox1.Items.Count - 1)
i = 0;
listBox1.SelectedIndex = i;
MessageBox.Show("Item: " + listBox1.SelectedItem.ToString());
然而,这永远不会结束,它只是继续循环。如果它在底部,我该如何检查它是否停止?如果我选中了"循环通过列表[x]"框,这应该是我的代码。。。
这都在我的Timer1中,间隔5000ms
edit:还有,当它出现在列表框的底部时,我如何让它打印成"你已经到达列表的末尾!"?
你说这都在"Timer1"中,这意味着代码实际上看起来像:
private void TimerElapsed(...)
{
int i = 0;
i = listBox1.SelectedIndex;
i = i + 1;
if (i > listBox1.Items.Count - 1)
i = 0;
listBox1.SelectedIndex = i;
MessageBox.Show("Item: " + listBox1.SelectedItem.ToString());
}
当你到达终点时,你设置i=0,这只允许循环继续而不抛出。要停止循环,还需要停止计时器调用此函数。
正确的代码是:
private void TimerElapsed(...)
{
int i = 0;
i = listBox1.SelectedIndex;
i++;
if (i > listBox1.Items.Count - 1)
{
MessageBox.Show("End of list reached!");
if (LoopAfterEnd)
i = 0;
else
Timer1.Stop();
}
listBox1.SelectedIndex = i;
MessageBox.Show("Item: " + listBox1.SelectedItem.ToString());
}
也可以写成:
private void TimerElapsed(...)
{
int i = 0;
i = listBox1.SelectedIndex;
i++;
if (i > listBox1.Items.Count - 1)
{
MessageBox.Show("End of list reached!");
i = 0;
if (!LoopAfterEnd)
Timer1.Stop();
}
listBox1.SelectedIndex = i;
MessageBox.Show("Item: " + listBox1.SelectedItem.ToString());
}
它的优点是,只需再次启动计时器,就可以让您稍后重新启动循环!