我有一个清单
static List<Participants> soop = ParticipantRepository.GetAllParticipants();
它有大约800个项目。然后是一个label
和一个timer
。在timer_tick
,我想随机显示其中一项。这是该事件的代码
private void timer1_Tick(object sender, EventArgs e) {
foreach (var participants in soop)
{
a = participants.RollNumber;
label1.Text = a;
break;
}
counter++;
if (counter == 200) {
timer1.Stop();
pictureBox5.Visible = false;
counter = 0;
}
}
到目前为止,我还无法实现随机功能,因为仅显示一个RollNumber,然后计时器开始计时并耗尽。我在做什么错了?
答案 0 :(得分:1)
我建议使用随机类。
Random randomGen = new Random();
private void timer1_Tick(object sender, EventArgs e)
{
var i = randomGen.Next(0, soop.Count);
label1.Text = soop[i].RollNumber;
counter++;
if (counter == 200)
{
timer1.Stop();
pictureBox5.Visible = false;
counter = 0;
}
}
答案 1 :(得分:0)
在每个滴答声中,将调用timer1_Tick
,因此您的foreach
循环从头开始,最后每次都显示第一项。相反,您可以存储显示的最后一项的索引。您已经有counter
,所以我们来使用它:
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = soop[counter % soop.Count].RollNumber;
counter++;
if (counter == 200) {
timer1.Stop();
pictureBox5.Visible = false;
counter = 0;
}
}