- - PR -
C#でのTabコントロール背景設定の方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-12 14:09
いつもお世話になっております。
現在C#アプリケーションを作成しているのですが、 Form上にTabを使用するような画面レイアウトを取ろうとしています。 またFormのデザインとして、背景にグラデーションを設定したいと思っています。 かっこよくするためには、Formに配置する各コントロールにも色を設定する必要が 出てきました。 ボタンなどは問題なくできるのですが、Tabコントロールの場合、 Tabページには背景を設定できましたが、『TABページを切り替えるボタン部分』 や『切替ボタンの右側部分』が灰色のままになってしまっています。 この部分の色を変更する方法はないのでしょうか? ご存知の方いらっしゃいましたら、よろしくお願いします。 また操作性が問題なければ代替の案などでも結構です。 ご意見をお願いします。 以上、お忙しいとは思いますが、よろしくお願いいたします。 | ||||
|
投稿日時: 2005-10-12 14:19
こんにちは、じゃんぬ です。
オーナードローの出番ですかね。 this.tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed; で、DrawItem イベントの DrawItemEventArgs を使って Draw という感じかな... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-10-12 15:17
じゃんぬねっとさん、早速の回答ありがとうございます。 ご指摘の手順を実施してみました。 おかげさまでうまくいきました。 ただ、『切替ボタンの右側部分』や『TabとTabページの間隔部分』 が灰色のまま残ってしまっています。 そのあたりも本イベント内で対応できるのでしょうか? ご参考までに、Webページを参考に書いたコードを下記に記載します。 (Draw系の関数周りは、今まで扱ったことのないクラス群やら イベント群が多数のためよくわかっていません... 私の単純な理解不足が一番問題と思います...) private void Form1_Load(object sender, System.EventArgs e) { this.tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed; } private void tabControl1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e) { //対象のTabControlを取得 TabControl tab = (TabControl) sender; //タブページのテキストを取得 string txt = tab.TabPages[e.Index].Text; //タブのテキストと背景を描画するためのブラシを決定する Brush foreBrush, backBrush; if (e.State == DrawItemState.Selected) { //選択されているタブのテキストを赤、背景を青とする foreBrush = Brushes.White; backBrush = Brushes.Blue; } else { //選択されていないタブのテキストは灰色、背景を白とする foreBrush = Brushes.Black; backBrush = Brushes.Gray; } //StringFormatを作成 StringFormat sf = new StringFormat(); //中央に表示する sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; //背景の描画 e.Graphics.FillRectangle(backBrush, e.Bounds); //Textの描画 e.Graphics.DrawString(txt, e.Font, foreBrush, e.Bounds, sf); } 以上、お忙しいとは思いますが、よろしくお願いいたします。 |
1