Sounds like your problem is solved, but just for the sake of completeness, let’s discuss how the computer was interpreting your original code, and why it reacted as it did.
The computer always interprets things one step at a time. For instance, if you wrote “a + b + c”, the computer doesn’t see “take the sum of these three numbers”, it sees “add a + b, and then add c to the result”. It’s adding in implied parentheses so that the statement becomes “(a + b) + c”.
You wrote:
if (1 > currentColour > 0)
You wanted that to be read as “if currentColor is between 1 and 0”. But the computer interprets it one step at a time. It adds some implied parentheses, like this:
if ((1 > currentColour) > 0)
So first it evaluates “1 > currentColour”, which results in an answer of either TRUE or FALSE. Then, it moves on to the second step, and tries to evaluate either “true > 0” or “false > 0”.
And at that point it gives up and tells you there’s an error, because those statements don’t make sense.
As an aside, this is an example of why strong typing in computer languages is a really good idea. C# is strongly-typed, which means it knows that a bool is a bool and it won’t let you try and use it as if it were a number. In a weakly-typed language, the computer would probably have decided that “true > 0” did make sense, and it would have happily computed a result and continued on with the program–even though that result would have had absolutely no relation to what you thought the computer was doing.
Then your program would give an error on some later line, totally unrelated to your actual mistake (or even make it to the end of the program and simply give a totally-wrong answer), and you might have been scratching your head for hours or days trying to figure out what was going wrong.