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

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

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

ListViewのグループ表示

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■96528 / inTopicNo.1)  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

引用返信 編集キー/
■96530 / inTopicNo.2)  Re[1]: ListViewのグループ表示
□投稿者/ OA (14回)-(2020/12/07(Mon) 11:41:45)
すみません。書き忘れました。
言語はVB.NETで2019です。
引用返信 編集キー/
■96636 / inTopicNo.3)  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

引用返信 編集キー/
■96639 / inTopicNo.4)  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にて実装することにしました。

どうも、ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ