最初に
TabControl
を動的に作る際に「配下にあるタブ欄」の高さが欲しいことがありました。「タブストリップ」と言うらしいです。
タブストリップの高さを取得する情報が見つけられなかったのでこの記事を作成しました。
ベストな道かはいまいち判断できませんが、同じことを実装されたいと考えた方々の参考になれば幸いです。
用語の意味
タブ・・・TabControl
の上部に表示されるタブページを表示するためのコントロール(TabPage
のことではない)
タブストリップ・・・タブを選択する一覧のこと(詳細は下記)
タブページ・・・TabControl
の下部に表示される選択したタブと対応付けられたページのこと(TabPage
オブジェクトのこと)
TabControl
・・・タブストリップとタブページを持ち合わせたControl
オブジェクト
タブストリップとは?
次の画像に表示されているタブの一覧のことを指します。
赤線が指している高さはTabControl配下のタブページの数とTabControlのWidthなどに依存するので、多ければ行が増えタブストリップのHeight
は高くなり、少なければ行が減りタブストリップのHeight
は低くなるはずです。
そもそもタブストリップの高さが必要になった背景は?
TabControl
を親コントロールへ追加する際に、次の2点の実装を行いたかったことがきっかけです。
-
TabControl
の全て(タブストリップ・タブページ含め)が表示されるようサイズを変更 - 親コントロールは子コントロール(
TabControl
)のサイズを元にサイズを調整する
1点目の実装で、TabControl
のサイズを決めるためにはタブストリップの高さが必要になりました。
実装
難しいことを考える必要はありませんでした。
「タブの高さ」と「タブストリップの行数」さえ分かれば取得できます。
次のように実装しました。
TabPage tabPage = new TabPage();
TabControl tab = new TabControl();
//「タブの高さ」×「タブストリップの行数」+「タブページの高さ」でtab全体を表示するための高さを取得
tab.Height = tab.ItemSize.height * tab.RowCount + tabPage.Height;