Как перебирать массив и отображать его элементы один за другим
Привет, у меня есть массив, скажем, 3 элемента в нем, как показано ниже:
string [] message = {how, are, you}; int counterTimerValue = 0;
Например, для каждого элемента в массиве мне нужно было бы отображать их в течение 10 секунд. И когда он достигнет последнего элемента, он вернется к первому элементу и будет отображать первый элемент, второй элемент снова и снова.
Я использовал объект timer для управления длительностью, но не знаю, как назначить каждому элементу таймер или что-то в этом роде.
Ниже приведены мои текущие коды:
for(int i = 0; i < message.Length; i++) { //txtNotification.Text = ""; //txtNotification.Text = "Notification:"; counterTimerValue = 10; displayTimer.Interval = 1000; // 1 second displayTimer.Tick += new EventHandler(this.displayTimerTick); displayTimer.Start(); //txtNotification.Text = txtNotification.Text + message[i]; }
private void displayTimerTick(Object source, EventArgs e) { counterTimerValue--; try { int index = (messageArray.Length - 1 - (counterTimerValue % messageArray.Length)); txtNotification.Text = messageArray[index]; } catch (Exception) { } if (counterTimerValue == 0) { displayTimer.Stop(); } }
Вышеприведенные коды будут отображать только последний элемент "вы", потому что цикл for завершит выполнение всех элементов в массиве вместо того, чтобы ждать, пока таймер закончит один элемент, а затем перейдет только к другому элементу.
Любая помощь будет оценена по достоинству. Спасибо.
Что я уже пробовал:
1. Поиск в интернете любых идей/мозговой штурм, но безрезультатно.
Richard MacCutchan
Не запускайте цикл сначала. Создайте таймер и установите индекс массива равным нулю. По мере того как каждое событие таймера выводит сообщение, увеличивайте значение индекса, не забывая проверять последнее значение, и выходите из таймера.