2016-04-08 4 views
0

Comment puis-je sélectionner automatiquement un élément dans un ListBox puis le définir comme texte dans un TextBox puis attendre 3 secondes et passer à la ligne suivante et répéter?Parcourez une zone de liste et définissez le texte TextBox

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

Incrémenter '' SelectedIndex' dans timer1_Tick'. Vous ne voulez pas de boucle ici, car vous ne voulez traiter qu'un élément à la fois. –

Répondre

1

Votre timer1_Tick devrait être quelque chose comme ceci:

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();    
} 

EDIT:

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++; 
} 

Et aussi définir l'intervalle de 3000 de la minuterie.

+0

c'est parfait mais comment puis-je le faire si ce n'est pas aléatoire? – Waypast

+1

@Waypast ... Voir ma réponse modifiée. –

+0

@Waypast ... Voir à nouveau ma réponse éditée pour voir comment répéter le processus en définissant 'i = 0;' dans l'instruction 'if'. –

1

Le ListBox a beaucoup de propriétés utiles:

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

% est l'opération modulo et renvoie le reste de la division. Il garantit que les valeurs entre 0 et SelectedIndex - 1 sont toujours renvoyées et que les index sont répétés.

En outre, si aucun élément est sélectionné, vous obtiendrez un SelectedIndex de -1 et SelectedItem sera null. Veillez donc à éviter ces cas en définissant des conditions initiales appropriées ou en ajoutant des contrôles.

.: par exemple

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