0
You'll need to call Application.DoEvents() before Thread.Sleep(), otherwise the color changes will be cached by GDI+ and won't take effect until the method ends.
Here's how I'd do it. I'm assuming that the buttons all have different colors to start with and you want them to retain their colors when they are in sorted order. You don't need to deal with the case i == 5 as it will never be called:
public void SwapColor(Button b1, Button b2)
{
Color tempColor = b1.BackColor;
b1.BackColor = b2.BackColor;
b2.BackColor = tempColor;
}
public void BubbleSort(int[] array, int Size)
{
int temp;
for (int pass = 1; pass < Size; pass++)
{
for (int i = 0; i < Size - pass; i++)
{
if (array[i] > array[i + 1])
{
if (i == 0)
{
SwapColor(btn1, btn2);
}
if (i == 1)
{
SwapColor(btn2, btn3);
}
if (i == 2)
{
SwapColor(btn3, btn4);
}
if (i == 3)
{
SwapColor(btn4, btn5);
}
if (i == 4)
{
SwapColor(btn5, btn6);
}
Application.DoEvents();
Thread.Sleep(1000); // 2000 is a bit long
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
}
a();
}
