如何根据c#windows窗体应用程序中的项目在listview列中添加Icon?

时间:2016-03-10 07:17:14

标签: c# winforms listview

我有一个listview和列,我需要在listview中添加图标,如果我选择行意味着它应该是打开邮件图标,如果我没有选择行意味着它是因为它是Mail图标。

你们能告诉我逻辑......

谢谢!

2 个答案:

答案 0 :(得分:6)

由于我不知道您如何将这些项目添加到ListView,因此我只能为您提供一个示例代码段。在解决方案中添加ImageList,并将这两个图标(已读和未读邮件图标)添加到此列表中。要使用图像将项目添加到列表视图控件,您可以执行以下操作:

ListViewItem item = new ListViewItem();
item.SubItems.Add("item1");
item.SubItems.Add("item2");

item.ImageIndex = 0;
listView1.Items.Add(item);

要在选择图标时更改图标,您应使用SelectedIndexChanged事件:

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
    listView1.SelectedItems[0].ImageIndex = 1;
}

请记住设置SmallImageList属性。您可以使用列表视图属性或以编程方式在设计器中执行此操作:

listView1.SmallImageList = imageList1;

请注意,您必须将ImageIndex属性设置为ImageList中图标所在的索引,否则不会显示任何图标。

答案 1 :(得分:3)

您可以使用州图像列表:

var listViewItem1 = new ListViewItem(new string[] { "", "Subject2"}, -1);
var imageList1 = new ImageList(this.components);
var listView1 = new ListView();
...
// setup listview
listView1.StateImageList = imageList1;
...
// set up initial image index
listViewItem1.StateImageIndex = 1;

然后,如果单击行图像索引更改为下一个。因此,如果在您的图像列表中有邮件和邮件打开的图像,它将在它们之间切换。