C#で、Visibleプロパティは、コントロールの持つ表示か非表示かのフラグ値とは関係なく表示されているかどうかを戻す

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