循环通过ListBox并设置TextBox文本

时间:2016-04-08 16:32:22

标签: c# loops timer listboxitem

如何在ListBox中自动选择项目,然后在TextBox中将其设置为文本,然后等待3秒钟,然后转到下一行并重复?

private void button2_Click(object sender, EventArgs e)
{
    timer.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    foreach (var item in listBox1.Items)
    {
        textBox2.Text = listBox1.Text;                
    }
}

2 个答案:

答案 0 :(得分:1)

您的public Form1() { InitializeComponent(); timer1.Interval = 3000; } private void timer1_Tick(object sender, EventArgs e) { Random rnd = new Random(); int i = rnd.Next(0, listBox1.Items.Count - 1); textBox2.Text = listBox1.Items[i].ToString(); } 应该是这样的:

int i;

private void timer1_Tick(object sender, EventArgs e)
{            
    if (i > listBox1.Items.Count - 1)
    {
        i = 0;//Set this to repeat
        return;
    }
    textBox2.Text = listBox1.Items[i].ToString();
    i++;
}

修改

3000

并将计时器的间隔设置为server/lib

答案 1 :(得分:1)

ListBox有很多有用的属性:

private void timer1_Tick(object sender, EventArgs e)
{           
    textBox2.Text = listBox1.SelectedItem.ToString();
    listBox1.SelectedIndex = (listBox1.SelectedIndex + 1) % listBox1.Items.Count;
}

%是模运算并返回除法的余数。它确保始终返回0SelectedIndex - 1之间的值,并使索引重复。

此外,如果未选择任何项目,您将获得SelectedIndex -1SelectedItem将为null。因此,请务必通过设置适当的初始条件或添加检查来避免这些情况。

E.g:

if (listBox1.Items.Count > 0) {
    if (listBox1.SelectedIndex == -1) {
        listBox1.SelectedIndex = 0;
    }
    ... // code of above
}