I am trying to make a very simple logic game. The idea is to see a matrix with a certain number of colored squares(buttons) then to hide them and the player has to click the colored squares. So I need a 2 second delay between the painting the squares/buttons and returning the original colors. All the code is implemented in a button_click event.
private void button10_Click(object sender, EventArgs e)
{
int[,] tempMatrix = new int[3, 3];
tempMatrix = MakeMatrix();
tempMatrix = SetDifferentValues(tempMatrix);
SetButtonColor(tempMatrix, 8);
if (true)
{
Thread.Sleep(1000);
// ReturnButtonsDefaultColor();
}
ReturnButtonsDefaultColor();
Thread.Sleep(2000);
tempMatrix = ResetTempMatrix(tempMatrix);
}
This is the whole code, but what I need is to have some delay between calling SetButtonColor() and ReturnButtonsDefaultColor(). All my experiments with Thread.Sleep() meet no success till now. I get a delay at some point, but the colored squares/buttons are never shown.
You don’t see the buttons change color because the
Sleepcall prevents messages from being processed.Probably the easiest way to handle this is with a timer. Initialize the timer with a 2 second delay and make sure that it’s disabled by default. Then, your button click code enables the timer. Like this:
And your timer’s Elapsed event handler: