【发布时间】:2014-11-19 11:01:32
【问题描述】:
我想在 ListView 中的选定项目周围绘制一个矩形,因为在某处阅读了 Microsoft 建议不要更改所述项目的“突出显示颜色”的内容。但是,我正在使用 selectedIndexChanged 事件,当绘制实际的 listviewitem 时,我的矩形消失了。有根据的猜测会表明我的矩形要么在它后面,要么在重绘时被清除?所以我的问题是,什么时候才是真正绘制矩形的最佳时间,因为它是可见的?到目前为止,我的代码如下所示:
void lvMain_SelectedIndexChanged(object sender, EventArgs e)
{
if (lvMain.SelectedItems.Count > 0)
{
if (lastSelectedItem == null) // First time called
{
lastSelectedItem = (sender as System.Windows.Forms.ListView).SelectedItems[0];
DrawHighlightRectanlge(lastSelectedItem);
}
else
{
// TODO: Remove previous highlight
lastSelectedItem = (sender as System.Windows.Forms.ListView).SelectedItems[0];
DrawHighlightRectanlge(lastSelectedItem);
}
}
}
internal void DrawHighlightRectanlge(System.Windows.Forms.ListViewItem item)
{
using (Graphics g = item.ListView.CreateGraphics())
{
g.DrawRectangle(new Pen(Color.Red), new Rectangle(item.Position.X, item.Position.Y, item.Bounds.Width, item.Bounds.Height));
}
}
TIA
【问题讨论】:
-
是的,它在
DrawItem事件中被重绘。这是您需要添加矩形绘图代码的地方。请注意,您现在需要负责所有绘图;但是大多数困难的事情都可以通过调用e参数中的函数来完成.. - 你使用哪种视图模式? -
我正在使用“详细信息”视图