如您所知,在listview控件中没有简单的方法可以更改所选项目的颜色,为此您应该使用drawItem事件。 (我是对还是有一种我不知道的方式?) 所以,我使用drawitem并尝试使一切正常,除了这个属性。它很好但是在标题视图中有一个小方框后面的图标显示项目名称(也在大图标视图中),它是不可见的但是当我点击它显示的位置时。我应该如何让它始终可见?感谢。
我为你的回复添加了代码和图片,坦克
void FileList_DrawItem(object sender, DrawListViewItemEventArgs e)
{
if (e.Item.Selected)
{
Rectangle rectangle = e.Bounds;
rectangle.Inflate(-1, -1);
Image image;
if (this.View == System.Windows.Forms.View.LargeIcon || this.View == System.Windows.Forms.View.Tile)
{
image = LargeImageList.Images[e.Item.ImageKey];
}
else
{
image = SmallImageList.Images[e.Item.ImageKey];
}
Rectangle rectPoint = new Rectangle(e.Item.Bounds.X + 3, e.Item.Bounds.Y + 3, image.Width - 3, image.Height - 3);
Rectangle srcRect = new Rectangle(0, 0, image.Width, image.Height);
using (Graphics g = e.Graphics)
{
g.DrawRectangle(Pens.Red, rectangle);
g.DrawImage(image, rectPoint, srcRect, GraphicsUnit.Pixel);
Rectangle rectangle2 =new Rectangle(e.Item.Bounds.X+image.Width+5,e.Item.Bounds.Y+(image.Height/2)+7,50,15);
using (StringFormat sf = new StringFormat())
{
using (Font headerFont =
new Font("Helvetica", 8, FontStyle.Regular))
{
e.Graphics.DrawString("Folder", headerFont,
Brushes.Black, rectangle2, sf);
}
}
}
}
else
{
e.DrawDefault = true;
}
}
答案 0 :(得分:0)
我是以某种方式完成的,首先也许您需要将每个项目文本设置为string.Empty或类似的东西,然后您应该自己更改文本的矩形。它不是很好,但它可以立即完成。对于每个视图的更改和测试,直到它变好。