You need to Refresh the control because it does not know that repainting is necessary.
if (roundButton[1].backgroundColor == System.Drawing.Color.LimeGreen)
{
roundButton[1].backgroundColor = System.Drawing.Color.Red;
roundButton[1].Refresh();
}
When you change the BackColor of a standard control, the system takes care of all that stuff for you (invalidating and repainting). But you have defined a separate property with the containing backcolor - if you change it, the control must be informed.
If you use the default BackColor propery, it should work without calling Refresh manually.