如何在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;
}
}
答案 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;
}
%
是模运算并返回除法的余数。它确保始终返回0
和SelectedIndex - 1
之间的值,并使索引重复。
此外,如果未选择任何项目,您将获得SelectedIndex
-1
,SelectedItem
将为null
。因此,请务必通过设置适当的初始条件或添加检查来避免这些情况。
E.g:
if (listBox1.Items.Count > 0) {
if (listBox1.SelectedIndex == -1) {
listBox1.SelectedIndex = 0;
}
... // code of above
}