我已经使用以下处理程序设置了一个基本的所有者绘制列表视图(在详细信息模式下):
void SinkHandlerDrawColumnHeader(Object Sender, DrawListViewColumnHeaderEventArgs E)
{
E.DrawDefault = true;
}
void SinkHandlerDrawItem(Object Sender, DrawListViewItemEventArgs E)
{
E.DrawDefault = true;
TrackingMessage Data = (TrackingMessage)E.Item.Tag;
E.Item.SubItems[0].Text = Data.Line().ToString();
E.Item.SubItems[1].Text = Data.Message();
}
void SinkHandlerDrawSubItem(Object Sender, DrawListViewSubItemEventArgs E)
{
E.DrawDefault = true;
}
虽然上面的代码有效,但只要列表视图可见,它就会不断地被重新绘制。知道为什么吗?
编辑:问题是我修改了所有者绘制处理程序中的子项文本。相反,使用E.Graphics.DrawString渲染文本解决了这个问题。