継承されたリストビューがあり、列ヘッダーをクリックするとかなりちらつきます。リストは詳細ビューにあります。
public ListViewEx()
{
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}
int sortColumn = -1;
protected override void OnColumnClick(ColumnClickEventArgs e)
{
if(e.Column != sortColumn)
{
sortColumn = e.Column;
this.Sorting = SortOrder.Ascending;
}
else
{
if(this.Sorting == SortOrder.Ascending)
this.Sorting = SortOrder.Descending;
else
this.Sorting = SortOrder.Ascending;
}
this.Sort();
}
リストにデータを入力してもちらつきはありません。
for(int i = 0; i < 10; i++)
{
ListViewItem lvi = new ListViewItem("this is column 1 " +i);
lvi.SubItems.Add("...
lvi.SubItems.Add("...
lvi.SubItems.Add("...
lvi.SubItems.Add("...
lvi.SubItems.Add("...
listViewEx1.Items .Add (lvi);
}
WM_ERASEBKGND を編集しても問題は解決しませんでした。
リストビューをホストするフォームにこのコードを追加したところ、ちらつきがなくなりました
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}