I set a control's Visible property to true and in the next statement, it returns false. Why doesn't setting the Visible property work?
A control's Visible property depends on its parent control's Visible property, if it has a parent control. If the parent control is not visible, then the control is also not visible, so its Visible property is false.
Contributed from George Shepherd's Windows Forms FAQ