如何在使用drawitem后在listview标题视图中显示名称框?

时间:2016-05-29 13:07:40

标签: c# listview

如您所知,在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;
        }
    }

enter image description here

1 个答案:

答案 0 :(得分:0)

我是以某种方式完成的,首先也许您需要将每个项目文本设置为string.Empty或类似的东西,然后您应该自己更改文本的矩形。它不是很好,但它可以立即完成。对于每个视图的更改和测试,直到它变好。