Inside the timer_Tick method you on each call you loop through the whole
lotto
array and you set all the objects to green. This is why all of them are changing at the same time.
If you want them to change individually, you need to store for example a counter value outside the method and check which control to re-color each time.
For example you could have a variable
private int callcounter = 0;
defined on the form level and change the value based on the modulo of the variable value. So if you have 4 controls, something like
void timer_Tick(object sender, EventArgs e)
{
if (lotto[(callcounter % 4)].ToString() == "0")
{
UpArrow.Foreground = new System.Windows.Media.SolidColorBrush(Colors.Green);
}
else if (lotto[(callcounter % 4)].ToString() == "1")
{
DownArrow.Foreground = new System.Windows.Media.SolidColorBrush(Colors.Green);
}
else if (lotto[(callcounter % 4)].ToString() == "2")
{
LeftArrow.Foreground = new System.Windows.Media.SolidColorBrush(Colors.Green);
}
else if (lotto[(callcounter % 4)].ToString() == "3")
{
RightArrow.Foreground = new System.Windows.Media.SolidColorBrush(Colors.Green);
}
callcounter++;
}
Also why not store the controls in the array.This way you could just change the color of based on the index of the array using the callcounter.
To change the color back to whit, just use the same Tick event and investigate the current color. If green change to white and vice versa. Introducing a second timer adds unnecessary complexity.