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

わんくま同盟

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

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

ツリー一括表示

ListViewのグループ表示 /OA (20/12/07(Mon) 11:36) #96528
Re[1]: ListViewのグループ表示 /OA (20/12/07(Mon) 11:41) #96530
Re[1]: ListViewのグループ表示 /ニケ (20/12/30(Wed) 14:52) #96636
  └ Re[2]: ListViewのグループ表示 /OA (21/01/03(Sun) 19:57) #96639 解決済み


親記事 / ▼[ 96530 ] ▼[ 96636 ]
■96528 / 親階層)  ListViewのグループ表示
□投稿者/ OA (13回)-(2020/12/07(Mon) 11:36:36)

分類:[.NET 全般] 

環境:Win10、Windowsファームアプリ、.Net4.7.2

System.Windows.Forms.ListViewでコントロール内に表示される項目をグループ分け表示した時
ヘッダーテキストのフォントサイズを指定できないでしょうか?
例えば、以下のようなコードでは「AAA」と「BBB」のみ文字が小さくなって、とても見にくいです。

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ListView1.Font = New System.Drawing.Font("MS UI Gothic", 20.0!)
        Dim lvg1 As New ListViewGroup("AAA")
        Dim lvg2 As New ListViewGroup("BBB")
        ListView1.Groups.Add(lvg1)
        ListView1.Groups.Add(lvg2)
        For i = 1 To 100
            Dim lvi As New ListViewItem(i.ToString, If(i Mod 2 = 1, lvg1, lvg2))
            ListView1.Items.Add(lvi)
        Next
    End Sub

.NET標準の機能では、無理っぽいので、Win32API等を使って実現できないでしょか?
例えば、以下の例ではLVM_SETGROUPINFOをSendMessageすることで、展開マークを表示している
例を見つけました。文字サイズは変化なしのようですが.....
https://www.codeproject.com/articles/36775/collapsible-listviewgroup

[ □ Tree ] 返信 編集キー/

▲[ 96528 ] / 返信無し
■96530 / 1階層)  Re[1]: ListViewのグループ表示
□投稿者/ OA (14回)-(2020/12/07(Mon) 11:41:45)
すみません。書き忘れました。
言語はVB.NETで2019です。
[ 親 96528 / □ Tree ] 返信 編集キー/

▲[ 96528 ] / ▼[ 96639 ]
■96636 / 1階層)  Re[1]: ListViewのグループ表示
□投稿者/ ニケ (8回)-(2020/12/30(Wed) 14:52:02)
No96528 (OA さん) に返信
この手の話は九分九厘 Graphics.DrawString を使って自前で描けってなるよね。
描画範囲を割り出すのが面倒なだけで。
https://social.msdn.microsoft.com/Forums/en-US/a2d11f3f-609c-4fbc-ae81-238c6a57ebd5/how-to-change-the-color-and-font-of-listviewgroupquotgeneralquot-in-listview?forum=vbgeneral

[ 親 96528 / □ Tree ] 返信 編集キー/

▲[ 96636 ] / 返信無し
■96639 / 2階層)  Re[2]: ListViewのグループ表示
□投稿者/ OA (15回)-(2021/01/03(Sun) 19:57:33)
No96636 (ニケ さん) に返信

ニケ様、ありがとうございます。

提示いただいたURLは、質問後に自分も見つけて、WndProcをOverridesしている箇所を少しだけ変更して、
Groupヘッダの文字サイズを大きくする事はできたのですが、ListViewItemに被さって描画され、
ListViewItemも自分で描画する必要があると思い、「労多くして功少なし」との考えに至り、諦めました。

WPF(System.Windows.Controls.ListView)でやってみたら、簡単に実現できたので、
この手の処理はWPFにて実装することにしました。

どうも、ありがとうございました。
解決済み
[ 親 96528 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -