Windows10
Visual Studio 2019
Formアプリにて…
現象
あるコントロールのVisibleを特定の条件下でのみtrueにするんだけども、できない。
label1.Visible = true;
としているんだけど、ブレークポイントを貼って1行ずつ見てみても、trueが入らない…なぜだーーー!と思っていたら。
原因
コントロールの親がある場合、親のプロパティに影響されるものがあるらしく、まさにそれだった。
デザイナーで開いて、ドキュメントアウトラインで確認すると意図しないコントロールの配下に入ってしまっていた。デザイナーでコントロールを操作しているうちに、気付かず別のコントロールの配下になってしまったようだ。
親コントロール側のVisibleがfalseだったため、今回のコントロールのVisibleをtrueにしても変更できなかった、ということだった。
対応
ドキュメントアウトラインで、親コントロールの上に移動させた。Visibleにtrueが入るようになった。
ドキュメントアウトライン
コントロールが増えてくると裏に隠れたり細かい選択がしにくかったりする。
そんなときは「ドキュメントアウトライン」が便利。画面に配置しているコントロールの階層構造をリストで確認できる。
ドキュメントアウトラインは
Visual Studioメニュー>表示>その他のウィンドウ>ドキュメント アウトライン(Ctrl+Alt+T)
から表示できる。
上側が前面で、下側が背面。上に重なっているイメージの感覚どおりでわかりやすい。
ドキュメントアウトラインでの注意点
ドキュメントアウトラインでコントロールをドラッグすることで順序や階層を移動させることができるが、移動後にLocationプロパティが「0,0」に強制セットされてしまう。上下の移動だけでも「0,0」になってしまうので、操作前に控えておくと安心。またはドキュメントアウトライン上部の↑↓操作ボタンなら、Locationプロパティはそのまま保たれる。1つずつしか移動できないけど。
参考