OwnerDraw
включен
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
try
{
using (Bitmap bitmap = new Bitmap(e.Bounds.Width, e.Bounds.Height))
{
using (Graphics buffer = Graphics.FromImage(bitmap))
{
using (StringFormat sf = new StringFormat())
{
sf.FormatFlags = StringFormatFlags.NoWrap;
sf.LineAlignment = StringAlignment.Center;
switch (e.Header.TextAlign)
{
case HorizontalAlignment.Center:
sf.Alignment = StringAlignment.Center;
break;
case HorizontalAlignment.Right:
sf.Alignment = StringAlignment.Far;
break;
}
bool selected = listView1.SelectedIndices.Count > 0 && listView1.SelectedIndices[0] == e.ItemIndex;
Brush brushBkg = selected ? SystemBrushes.Highlight : SystemBrushes.Control;
Rectangle r = new Rectangle(0, 0, e.Bounds.Width, e.Bounds.Height);
buffer.FillRectangle(brushBkg, r);
buffer.DrawString(e.SubItem.Text, listView1.Font, Brushes.Black, r, sf);
e.Graphics.DrawImage(bitmap, e.Bounds.X, e.Bounds.Y);
}
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
}
Почему мерцает?
В другом проекте этот код работает. А в этом у меня элементы добавляются очень часто. Но оно же при двойной буферизации в любом случае мерцать не должно
Без OwnerDraw
оно даже меньше мерцает Но почему?