DOBON.NET DOBON.NETプログラミング掲示板過去ログ

タブコントロールのTextプロパティの改行

環境/言語:[XP C# VisualStudio2010]
分類:[.NET]

初めまして。
C#というか、.NETを始めたばかりでこれからお世話になると思いますが、よろしくお願いします。

初歩的なことかもしれませんが、よろしければ教えてください。
tab Controlのタブの幅を固定(SizeModeをFixedに指定)してそのtabPageの
Textプロパティにタブの幅以上の文字を入力すると文字が途中で切れてしまいます。

フォントを変えたくないのでこのタブのボタン部分の文字を改行して2行で
表示したいのですが、どのようにしたらいいのでしょうか?

よろしくお願いします。

イメージはこんな感じです

|あか|あお|きい|←ろが半分くらい見えている
|   |   |   |
    ↓
|あか|あお|きい|
|   |   |ろ  |
お世話になっております

ササっと確認した程度ですが。

テキストに\r\n等の改行文字を入れれば改行されます。
ただし、デザイナから入れるとエスケープされてしまうので
ソース側から触らないといけないと思います。
ex:tabControl1.TabPages[0].Text = "きい\r\nろ";

また、そのままだとテキストの描画開始位置が中央なので
このサイトの「TabControlのタブを自分で描画する」を参考に調整する必要が
あるかと思われます。
早い返答ありがとうございます。

変更する場所はデザインのほうで自動生成したコードがあるForm1.Designer.csのファイルの
this.tabPage5.Text = "***";
の部分ですよね。

その部分に\r\nの改行文字を入れてみましたが、変化がありませんでした。
他に必要なコードとかあるのでしょうか?
タブコントロールの作成でできたコードを書いてみましたので必要なところが抜けていないか見ていただけないでしょうか?

//タブコントロール部分
this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.Buttons;
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Controls.Add(this.tabPage3);
this.tabControl1.Controls.Add(this.tabPage4);
this.tabControl1.Controls.Add(this.tabPage5);
this.tabControl1.Font = new System.Drawing.Font("MS P明朝", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.tabControl1.ItemSize = new System.Drawing.Size(120, 70);
this.tabControl1.Location = new System.Drawing.Point(4, 57);
this.tabControl1.Margin = new System.Windows.Forms.Padding(4);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(960, 307);
this.tabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.tabControl1.TabIndex = 1;

//タブページ部分
this.tabPage5.Location = new System.Drawing.Point(4, 74);
this.tabPage5.Margin = new System.Windows.Forms.Padding(4);
this.tabPage5.Name = "tabPage5";
this.tabPage5.Padding = new System.Windows.Forms.Padding(4);
this.tabPage5.Size = new System.Drawing.Size(952, 229);
this.tabPage5.TabIndex = 4;
this.tabPage5.Text = "天上天下\r\n唯我独尊";
this.tabPage5.UseVisualStyleBackColor = true;

長くなりましたが、よろしくお願いいたします。
Designerファイルの修正はやめた方がいいと思います。
記述するのは new や Loadイベントなどに書いた方がいいと思います。

ItemSizeの高さが足りないのではないでしょうか?
返答ありがとうございます。
ItemSizeの高さを現状の2倍(70→140)にしてみましたが、変化はありませんでした。

引き続きよろしくお願いいたします。
調べてみたところ、
Appearance = TabAppearance.Buttons
を設定しているとなぜか改行が効かない様です

このサイトの「TabControlのタブを自分で描画する」を元に
DrawItemイベントを実装すると改行されましたので
とりあえずはDrawItemイベントを実装すると実現できます。

……それにしてもなぜだ。
デザインでは変化ないです。実行しても駄目ですか?
ぱいらさんの言う
this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.Buttons;
の行をコメントアウトすると改行表示してくれました。

レスしてくださった方々ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板