C#(visual studio 2010)にて、ListViewをつかった表を作成しております。
ヘッダ部およびデータ部へ情報の表示はできたのですが、
ListViewヘッダ部の背景色の指定する箇所を見つけることができませんでした。
そもそも、ListViewのヘッダ部の背景色の指定はできるものなのでしょうか?
環境は以下です。
言語:C#
開発環境:visual studio 2010, .NET Framework4.0
OS:Windows10
program:Windows Forms プログラム
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
コメント頂きました、キーワードから解決しました。
ListViewは、ヘッダの背景色を、プロパティ値にて、変更することはできないようですね。
ヘッダのエリアに、描画処理をすることで、細かいイベント時の処理の意味はまだ理解できませんが、
背景色を指定することが出来ました。
以下参考ソースです。
C#
1 2/* 3Windows Form に、ListVew オブジェクト(listView1)を配置し以下の初期化を行いました。 4*/ 5 6 7private void InitListView() 8{ 9 // リストビュー初期化 10 listView1.Clear(); // リストビュークリア 11 listView1.FullRowSelect = true; // 1行選択にする 12 listView1.GridLines = true; // グリッド線を表示する 13 listView1.Sorting = SortOrder.Ascending; // ソートは昇順 14 listView1.View = View.Details; // 表示は詳細表示 15 16 // ヘッダ部背景色変更のためのイベントを定義 17 listView1.OwnerDraw = true; 18 listView1.DrawColumnHeader += new DrawListViewColumnHeaderEventHandler(listView1_DrawColumnHeader); 19 listView1.DrawItem += new DrawListViewItemEventHandler(listView1_DrawItem); 20 listView1.DrawSubItem += new DrawListViewSubItemEventHandler(listView1_DrawSubItem); 21 22 // カラムヘッダ作成 23 ColumnHeader columnDatetime = new ColumnHeader(); 24 ColumnHeader columnServer = new ColumnHeader(); 25 ColumnHeader columnTrouble = new ColumnHeader(); 26 ColumnHeader columnStatus = new ColumnHeader(); 27 // カラム名 28 columnDatetime.Text = "日時"; 29 columnServer.Text = "サーバ"; 30 columnTrouble.Text = "故障"; 31 columnStatus.Text = "状態"; 32 // カラム幅 33 columnDatetime.Width = 200; 34 columnServer.Width = 200; 35 columnTrouble.Width = 600; 36 columnStatus.Width = 122; 37 // タイトル行設定 38 ColumnHeader[] colHeaderRegValue = { columnDatetime, columnServer, columnTrouble, columnStatus}; 39 listView1.Columns.AddRange(colHeaderRegValue); 40 // ソート機能なし 41 listView1.Sorting = SortOrder.None; 42 // 空データを設定 43 string[] record = new string[4]; 44 record[0] = ""; 45 record[1] = ""; 46 record[2] = ""; 47 record[3] = ""; 48 // リストビューに追加 49 for (int i = 0; i < 30; i++) 50 { 51 listView1.Items.Add(new ListViewItem(record)); 52 } 53} 54 55/// <summary> 56/// リストビューサブアイテム描画イベント 57/// </summary> 58/// <param name="sender"></param> 59/// <param name="e"></param> 60private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) 61{ 62 e.DrawDefault = true; 63} 64 65/// <summary> 66/// リストビューアイテム描画イベント 67/// </summary> 68/// <param name="sender"></param> 69/// <param name="e"></param> 70private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) 71{ 72 e.DrawDefault = true; 73} 74 75/// <summary> 76/// カラムヘッダ描画イベント 77/// </summary> 78/// <param name="sender"></param> 79/// <param name="e"></param> 80private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) 81{ 82 e.DrawBackground(); 83 84 switch (e.ColumnIndex) 85 { 86 case 0: // 0カラム 87 case 1: // 1カラム 88 case 2: // 2カラム 89 case 3: // 3カラム 90 // カラムヘッダに四角を描画する。 91 e.Graphics.FillRectangle(Brushes.LightSteelBlue, e.Bounds); 92 StringFormat sf = new StringFormat(); 93 sf.LineAlignment = StringAlignment.Center; 94 sf.Trimming = StringTrimming.EllipsisCharacter; 95 sf.FormatFlags |= StringFormatFlags.NoWrap; 96 // カラムヘッダ文字列を描画する。 97 e.Graphics.DrawString(e.Header.Text, listView1.Font, Brushes.Black, e.Bounds, sf); 98 break; 99 default: 100 e.DrawDefault = true; 101 break; 102 } 103} 104
投稿2018/01/15 13:11
編集2018/01/15 13:15総合スコア42
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
ListView には二種類あります。WPF と Windows Forms です。
WPF の場合
ListView の列ヘッダのスタイルを変更する
Windows Forms の場合
ListView.DrawColumnHeader イベント
投稿2018/01/15 11:10
総合スコア28669
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。