visible=falseのパネルに含まれるコントロールは、VisibleプロパティにTrueが設定されている場合でも、Visibleプロパティ取得をするとfalseが戻る。
つまり、こういうこと。
panel1.Controls.Add(btnVisibleButton); panel1.Visible = false; btnVisibleButton.Visible = true; Console.WriteLine(btnVisibleButton.Visible); // すぐ上の行でtrueをセットしたのに、falseが戻る panel1.Visible = true; Console.WriteLine(btnVisibleButton.Visible); // 親パネルを表示すると、trueが戻るように変化する
ただし親コントロールを持たない=そもそもフォームにすら所属しない場合は、表示されていなくてもvisibleがtrueで戻る
var newButton = New Button(); newButton.Visible = True; Console.WriteLine(newButton.Visible); // True