質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

13911閲覧

ListView ヘッダ部の背景色の指定

nobysanz

総合スコア42

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2018/01/15 10:55

編集2018/01/15 12:55

C#(visual studio 2010)にて、ListViewをつかった表を作成しております。
ヘッダ部およびデータ部へ情報の表示はできたのですが、
ListViewヘッダ部の背景色の指定する箇所を見つけることができませんでした。

そもそも、ListViewのヘッダ部の背景色の指定はできるものなのでしょうか?

環境は以下です。
言語:C#
開発環境:visual studio 2010, .NET Framework4.0
OS:Windows10
program:Windows Forms プログラム

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/15 12:26

何を作っているか(Windows Forms? ASP.NET Web Forms? WPF? その他?)ぐらいは書きましょうよ。あなたは自分のことしか見えてないでしょうから、それで話が通じると思っているかもしれませんが・・・
guest

回答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
nobysanz

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ListView には二種類あります。WPF と Windows Forms です。

WPF の場合
ListView の列ヘッダのスタイルを変更する

Windows Forms の場合
ListView.DrawColumnHeader イベント

投稿2018/01/15 11:10

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobysanz

2018/01/15 12:55

コメントありがとうございます。対象プログラムは、WindowsFormsプログラムです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問