C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 35 を表示中)
■17914 / )  Re[7]: TabControlのItemSizeを変更方法
□投稿者/ よねKEN (5回)-(2008/05/03(Sat) 16:03:44)
2008/05/03(Sat) 16:05:24 編集(投稿者)

> 以下に例として記載しました。よねKEN 様のお聞きしたいこととまた違っていましたらご指摘ください。お願いします。
>
> 【例】
> ・TabContorol.width=300
> ・tab1〜tab5のItemSize.Width=60
> ・tab1のItemSize.Width=100になった場合
>        ↓
> ・tab2〜tab5のItemSize.Width=(TabContorol.width - tab1のItemSize.Width) / 4
>
> 【ItemSize.Width】
> tab1   =100
> tab2〜tab5=50

私の聞きたかった点(tab2〜tab5をどう表示したいか?)という点が確認できましたので、内容は理解できました。
最初の私の投稿ではMSDNで各プロパティを確認しただけで試していませんでしたので、
今実際にItemSizeプロパティ等を使ってみました。それで、今気づいたところなのですが、
ItemSizeプロパティはTabControlのプロパティで、すべてのタブに共通のサイズを与えるためのプロパティですね。
そのため、ご希望のことはItemSizeプロパティを使って実現することはできません。

ご希望に近い内容としては、TabControlのSizeMode=Normalの指定のままでTabPageのTextプロパティの文言に
スペースを付加してサイズを調整する方法が考えられます。
この内容を説明の便宜上ソースコードで表すと以下のような感じ。

tabControl1.SizeMode = TabSizeMode.Normal;
tabControl1.TabPages[0].Text = " tab1 "; // 掲示板の表示上"tab1"の前後にスペースが1つずつ入っているように見えますが、実際には5個ずつスペースを入れています。
tabControl1.TabPages[1].Text = "tab2";
tabControl1.TabPages[2].Text = "tab3";
tabControl1.TabPages[3].Text = "tab4";
tabControl1.TabPages[4].Text = "tab5";

ただし、文字単位での幅調整しかできませんし、tab1〜tab5の幅の合計がTabControlの幅を超えてしまうと
▲▼(のような部分)の表示もされますので、何かしらの理由でそういったことが許容できないのであれば、
TabControlを使うことを断念する必要があるかもしれません。

#個人的にはTabSizeMode.Normalの設定の動作であるタブのテキストの文字数に合わせて幅が調整される
#この動作をそのアプリの仕様とする方がプログラムが複雑にならないのでよいと思いますが。

返信 編集キー/


管理者用

- Child Tree -