TabControlでTabPageを無効にする
Windowsフォームアプリケーションで、タブを選択できないようにする方法。
参考: System.Windows.Controlsの紹介 - TabControl - Yuya Yamaki’s blog
これが結構やっかいで、調べてみると、惑わされてる人も多い。
WPFアプリケーションだと IsEnabled プロパティがあって、それを False にすると選択できなくなる。 非常に直感的でわかりやすい。
だが、Windowsフォームでは IsEnabled プロパティはない。
そして、Enabled プロパティも一見ないように見える。 なぜならばプロパティウィンドウに表示されないから。
コードでしか変更できないプロパティもあったような気がするので、 コードで書いてみることにする。
tabPage1. とタイプし、IntelliSense を表示させても Enabled は出てこない。
しかし、tabPage1.Enabled = false; としてもエラーにならない。
ビルドして確認すると、タブ自体は選択できるが、確かにタブ上のコントロールが全て無効になっている。
とりあえず、Windowsフォームで簡単にできる方法としてはこれが限界のようだ。
しかし、IntelliSense が出てこないのが気になったので調べてみた。
すると、以下のように定義されていた。
なるほど。
[Browsable(false)]でプロパティウィンドウ非表示。
[EditorBrowsable(EditorBrowsableState.Never)]でIntelliSense非表示。
とのことらしい。
このメンバーは無効です、といっている割にはしっかり効いてるけど。