3
OwnerDraw
プロパティをtrue
に変更してからDrawColumnHeader
イベントを処理することができますが、このようにすると、ヘッダを描画する際にすべての処理が必要になります。リストビューヘッダーのフォアカラーを変更するには? C#windowsフォームアプリケーション
とにかく前景の色を変更するだけですが、他のすべてはデフォルトで描画されますか?
OwnerDraw
プロパティをtrue
に変更してからDrawColumnHeader
イベントを処理することができますが、このようにすると、ヘッダを描画する際にすべての処理が必要になります。リストビューヘッダーのフォアカラーを変更するには? C#windowsフォームアプリケーション
とにかく前景の色を変更するだけですが、他のすべてはデフォルトで描画されますか?
これはどう:
が新しいの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();
}
}
}
いいえ、これらのヘッダーは、ユーザーが選択したビジュアルスタイルのテーマに従って描画されます。後のWindowsバージョンでのグラデーションの塗りつぶしは、単色ではありません。ユーザーの嗜好を上書きすることが実際にやるべきことであるかどうか、あなた自身に尋ねてください。はい、OwnerDrawを使用して設定を強制します。 –