最初に
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;
