如何在listview.subitem中添加图像

时间:2011-11-03 15:17:29

标签: c# winforms listview

我想知道如何在列表视图子项目中添加图片。

我正在使用此代码在子项目中显示文字。

 double Text = "2452";
 ListViewItem lItem = new ListViewItem();
 lItem.SubItems.Add(Text.ToString());

我想做这样的事情

 ListViewItem lItem = new ListViewItem();
 lItem.SubItems.Add(Text.ToString() + "C:\\image.png");

提前致谢。

3 个答案:

答案 0 :(得分:9)

private void ListView1_DrawColumnHeader(object sender, System.Windows.Forms.DrawListViewColumnHeaderEventArgs e) {
    e.DrawDefault = true;
}

private void ListView1_DrawSubItem(object sender, System.Windows.Forms.DrawListViewSubItemEventArgs e) {
    if (!(e.Item.SubItems(0) == e.SubItem)) {
        e.DrawDefault = false;
        e.DrawBackground();
        e.Graphics.DrawImage(My.Resources.Image1, e.SubItem.Bounds.Location);
        e.Graphics.DrawString(e.SubItem.Text, e.SubItem.Font, new SolidBrush(e.SubItem.ForeColor), (e.SubItem.Bounds.Location.X + My.Resources.Image1.Width), e.SubItem.Bounds.Location.Y);
    }
    else {
        e.DrawDefault = true;
    }
}

答案 1 :(得分:3)

ListView不支持此功能。

我找到了另一个答案,建议你用DataGridView切换它。

How can I set an icon for a ListViewSubItem?

当然,如果你愿意的话,你可以自定义绘制ListView,但我必须说事情会变得非常复杂。

答案 2 :(得分:-2)

您可以通过为图像实现自己的HttpHandler来实现此目的。这是一个实现IHttpHandler接口的.ashx文件。

因此,如果您构建了一个名为ImageHandler的文件,您可以在ListView中以声明方式使用它,如下所示:

<asp:ListView 
     ID="ImageListView" 
     runat="server"
     DataKeyNames="Id">
        <ItemTemplate>        
            <img id="img1" src='<%#"~/ImageHandler.ashx?Id=" + Eval("Id") %>' />
        </ItemTemplate>
</asp:ListView>