2012-01-11 14 views
3

OwnerDrawプロパティをtrueに変更してからDrawColumnHeaderイベントを処理することができますが、このようにすると、ヘッダを描画する際にすべての処理が必要になります。リストビューヘッダーのフォアカラーを変更するには? C#windowsフォームアプリケーション

とにかく前景の色を変更するだけですが、他のすべてはデフォルトで描画されますか?

+5

いいえ、これらのヘッダーは、ユーザーが選択したビジュアルスタイルのテーマに従って描画されます。後のWindowsバージョンでのグラデーションの塗りつぶしは、単色ではありません。ユーザーの嗜好を上書きすることが実際にやるべきことであるかどうか、あなた自身に尋ねてください。はい、OwnerDrawを使用して設定を強制します。 –

答えて

2

これはどう:

が新しいのWinFormプロジェクトを作成し、フォーム上にリストビューコントロールをドラッグし、[プロパティ]ペインでOwnerDrawする=真ビュー=詳細を設定し、その後、DrawColumnHeaderを扱いますイベント。

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      this.SetLastColumnWidth(); 

      this.theListView.Layout += delegate 
      { 
       this.SetLastColumnWidth(); 
      }; 
     } 

     private void SetLastColumnWidth() 
     { 
      // Force the last ListView column width to occupy all the 
      // available space. 
      this.theListView.Columns[ this.theListView.Columns.Count - 1 ].Width = -2; 
     } 

     private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) 
     { 
      // Fill header background with solid yello color. 
      e.Graphics.FillRectangle(Brushes.Yellow, e.Bounds); 
      // Let ListView draw everything else. 
      e.DrawText(); 
     } 
    } 
} 
関連する問題