【问题标题】:How to add border to items in a listview control using C#?如何使用 C# 为列表视图控件中的项目添加边框?
【发布时间】:2015-12-18 01:42:57
【问题描述】:

我正在使用列表视图控件,通过 ImageList 添加图像

if (dtPhoto.Rows.Count > 0)
{
foreach (DataRow dr in dtPhoto.Rows)
            {
                if (dr["Photo"].ToString() != "")
                {
                    byte[] barrImg = (byte[])dr["Photo"];
                    MemoryStream mStream = new MemoryStream(barrImg);
                    imageList.Images.Add(Image.FromStream(mStream));
                }
            }
        }

        imageList.ImageSize = new Size(75, 75);
        lvItem.LargeImageList = imageList;

        for (int i = 0; i < imageList.Images.Count; i++)
        {
            lvItem.Items.Add(dtPhoto.Rows[i]["Name"].ToString() + "\n" + "(" + dtPhoto.Rows[i]["Type"].ToString() + ")", i);
        }

我想为 Listview 中的每个项目添加边框可以吗? 请帮忙。 提前致谢。

【问题讨论】:

    标签: c# winforms listview imagelist


    【解决方案1】:

    可以将ListView的OwnerDraw属性设置为true,然后处理DrawItem事件并绘制边框,例如:

    private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
    {
        e.DrawDefault = true;
        e.Graphics.DrawRectangle(Pens.Red, e.Bounds);
    }
    

    【讨论】:

    • 谢谢它的工作。但它为所有图像提供了固定大小,有办法解决吗?
    • @AdarshRavi 欢迎您,在ListView 中显示图像的主要方式是使用ImageList,即所有图像大小相同,您可以使用DrawItem 事件自己完全绘制项目或在固定大小的位图(与 ImageList 大小相同)的中心绘制不同大小的图像,然后将它们放入 ImageList 中。我所说的一个例子是显示不同尺寸图像的缩略图,而所有缩略图都以 128x128 尺寸显示。
    • @AdarshRavi 作为一个更好的解决方法,如果您可以使用与 ListView 不同的控件,创建一个承载 PictureBoxLabelUserControl(如 ListView 的项目)然后使用 FlowLayoutPanel 布局与您自定义创建的控件一样多的控件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多