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

わんくま同盟

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

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

■102517 / 4階層)  タブコントロールのタブの文字色"だけ"を変えたい
□投稿者/ KOZ (423回)-(2023/11/10(Fri) 17:52:46)
No102514 (カルミーア さん) に返信

>>TabControlを自分でビジュアルスタイルで描画する
>>https://dobon.net/vb/dotnet/control/tabsidebug.html#paint
>>が参考になると思います。
> こちらせっかく御紹介頂き申し訳ないですが、面倒というよりも目的と剥離しているような気がしました。
> タブの回転などは全く不要で、必要な部分が何なのかがよくわからない状況です。

コピペして文字を描いているところだけ修正すればいいんですが・・・

> 加えてこちらのサンプルは色をべた塗しておりますが、私が求めるものはデフォルトと同じグレーのグラデーション色です。
> グレーのグラデーション色に設定しているものをご提示頂けると大変ありがたいです。

コピペして実行してみました?

>>面倒なら TabPage 実際の文字列は Tag プロパティに保存しておいて、Text プロパティはスペースで埋めておいて文字列のみ描画すればいいかも。
> ソースコードを提示してくださってありがとうございます。
> ただ、私の要求が正直こんなに手の込んだものになるとは思わず、かなり難航しています。
> ビットマップ形式のファイルが必要?みたいですが、そうなってくると開発陣や顧客に相談しないといけなくなります。

ファイルは不要です。耳の位置は上固定でいいなら簡単です。
TabPage の Tag プロパティに表示する文字、Text プロパティには相応の空白を設定してください。

Public Class CustomTabControl
    Inherits TabControl

    Public Sub New()
        DoubleBuffered = True
        ResizeRedraw = True
        SetStyle(ControlStyles.UserPaint, False)
    End Sub

    Const WM_PAINT = &HF

    Protected Overrides Sub WndProc(ByRef m As Message)
        Select Case m.Msg
            Case WM_PAINT
                SetStyle(ControlStyles.UserPaint, True)
                MyBase.WndProc(m)
                SetStyle(ControlStyles.UserPaint, False)
            Case Else
                MyBase.WndProc(m)
        End Select
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim hdc = e.Graphics.GetHdc()
        Dim m = Message.Create(Handle, WM_PAINT, hdc, IntPtr.Zero)
        DefWndProc(m)
        e.Graphics.ReleaseHdc()
        For i As Integer = 0 To TabPages.Count - 1
            Dim page As TabPage = TabPages(i)
            Dim rect As Rectangle = GetTabRect(i)
            Dim tabColor As Color
            Dim tabFont As Font
            Dim needDispose As Boolean = False
            If i = SelectedIndex Then
                tabColor = Color.Red
                tabFont = New Font(Font.FontFamily, Font.Size, FontStyle.Bold)
                needDispose = True
            Else
                tabColor = ForeColor
                tabFont = Font
            End If
            TextRenderer.DrawText(e.Graphics, CStr(page.Tag),
                                  tabFont, rect, tabColor,
                                  TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter)
            If needDispose Then
                tabFont.Dispose()
            End If
        Next
        MyBase.OnPaint(e)
    End Sub

End Class


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[3]: タブコントロールのタブの文字色"だけ"を変.. /カルミーア →Re[5]: タブコントロールのタブの文字色"だけ"を変.. /カルミーア
 
上記関連ツリー

タブコントロールのタブの文字色"だけ"を変えたい / カルミーア (23/11/10(Fri) 12:16) #102507
Re[1]: タブコントロールのタブの文字色"だけ"を変.. / KOZ (23/11/10(Fri) 12:39) #102508
  └ Re[2]: タブコントロールのタブの文字色"だけ"を変.. / KOZ (23/11/10(Fri) 13:40) #102510
    └ Re[3]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/10(Fri) 16:16) #102514
      └ タブコントロールのタブの文字色"だけ"を変えたい / KOZ (23/11/10(Fri) 17:52) #102517 ←Now
        └ Re[5]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/11(Sat) 11:41) #102519
          └ Re[6]: タブコントロールのタブの文字色"だけ"を変.. / KOZ (23/11/11(Sat) 12:17) #102520
            └ Re[7]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/15(Wed) 00:18) #102538
              ├ Re[8]: タブコントロールのタブの文字色"だけ"を変.. / 魔界の仮面弁士 (23/11/15(Wed) 00:42) #102539
              │└ Re[9]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/16(Thu) 01:52) #102547
              └ Re[8]: タブコントロールのタブの文字色"だけ"を変.. / KOZ (23/11/15(Wed) 09:54) #102540
                ├ Re[9]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/16(Thu) 02:01) #102548
                └ Re[9]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/19(Sun) 01:13) #102568
                  └ Re[10]: タブコントロールのタブの文字色"だけ"を変.. / 魔界の仮面弁士 (23/11/19(Sun) 02:58) #102573
                    ├ Re[11]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/20(Mon) 01:20) #102580
                    └ Re[11]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/24(Fri) 01:36) #102597
                      ├ Re[12]: タブコントロールのタブの文字色"だけ"を変.. / 魔界の仮面弁士 (23/11/24(Fri) 15:17) #102603
                      └ Re[12]: タブコントロールのタブの文字色"だけ"を変.. / KOZ (23/11/24(Fri) 18:26) #102604
                        └ Re[13]: タブコントロールのタブの文字色"だけ"を変.. / 魔界の仮面弁士 (23/11/24(Fri) 21:41) #102606
                          └ Re[14]: タブコントロールのタブの文字色"だけ"を変.. / KOZ (23/11/24(Fri) 23:38) #102607
                            ├ Re[15]: タブコントロールのタブの文字色"だけ"を変.. / KOZ (23/11/25(Sat) 01:16) #102609
                            └ Re[15]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/25(Sat) 21:48) #102613
                              └ Re[16]: タブコントロールのタブの文字色"だけ"を変.. / 魔界の仮面弁士 (23/11/26(Sun) 11:39) #102619
                                └ Re[17]: タブコントロールのタブの文字色"だけ"を変.. / カルミーア (23/11/27(Mon) 22:16) #102624 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信