var myPanel = new Panel() {new Size(50, 50), new Point(100,100)};
if ( ! ( controls.Contain(myPanel) ) {
The answer is the "new panel" will always never be in the Controls collection before it is added. Each and every object, not just controls, is given a unique ID on creation. so "newing" an object will always be false. What you need to do is to check the "type of object" to see if there is already a "panel type" in the collection. something like (unchecked):
if (!controls.Any(x => x is Panel))
{
var myPanel = new Panel() {new Size(50, 50), new Point(100,100)};
controls.Add(myPanel);
controls.SetChildIndex(myPanel, 0);
}