【问题标题】:Images in ListView subitemListView 子项中的图像
【发布时间】:2012-01-06 18:05:55
【问题描述】:

如何为列表视图子项添加图像而不是文本?喜欢http://i44.tinypic.com/2mzz6s6.png

这通常是我添加字符串的方式:

ListViewItem item = new ListViewItem("A");
item.SubItems.Add("B");
item.SubItems.Add("C");
listView1.Items.AddRange(new ListViewItem[] { item });

我正在使用带有 WinForms 的 .NET 2.0。另外,请不要将我链接到具有高级 .NET 列表视图控件的文章。我想坚持 MSVC 中的标准。

【问题讨论】:

    标签: c# winforms image listview subitem


    【解决方案1】:

    在 WPF 中,您可以轻松做到这一点,

    在 Windows 窗体中,您可以阅读

    http://www.codeproject.com/KB/combobox/imagelistbox.aspx

    作为您的样本。

    主要思想是

    首先,将您的列表框设置为 ownerdraw

    然后,在 itemdraw 事件中(或者是 drawitem?)抓取你的图像并在分配的空间中绘制它(e.Graphics.DrawImage),然后在旁边绘制项目的测试它(e.Graphics.DrawString

    【讨论】:

    • 您应该阅读 ImageListBox 的代码并编写自己的代码。 NoWay 为您在 ListBox 中显示图像而无需自定义 ListBox (WinForm)
    • 问题是关于ListView 而不是ListBox
    【解决方案2】:

    如果您需要图标位于第一列,则可以通过创建一个带有您要显示的图像的ImageList 来轻松完成,将其分配给ListViewSmallImageList 属性并设置适当的ImageIndex 用于该项目。像这样:

    listView1.SmallImageList = YourImageList;
    ListViewItem lvi = new ListViewItem();
    lvi.SubItems.Add("A");
    lvi.SubItems.Add("B");
    lvi.SubItems.Add("C");
    lvi.ImageIndex = 2; // this will display YourImageList.Images[2] in the first column
    listView1.Items.Add(lvi);
    

    【讨论】:

    • 谢谢。一个非常优雅的解决方案。
    • @pseudonym27,如果您希望图标以LargeIcons 模式显示,您还应该将ImageList(上例中为YourImageList)分配给@ 的LargeImageList 属性987654330@.
    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2013-08-30
    • 2021-03-26
    相关资源
    最近更新 更多