我花了很多时间尝试在列表视图中实现图像预览。我能实现的最好的是列表视图中每个项目重复的相同图像,因为下面的代码将只添加listviewimages()方法中的第一个图像。我尝试使用索引,我得到一个错误,如无法添加项目两次删除第一个实例。任何指针都会受到赞赏。
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
//
ImageList imageList1 = new ImageList();
imageList1.ImageSize = new Size(32, 32);
listView_Families.LargeImageList = listViewImages();
TreeNode newSelected = e.Node;
listView_Families.Items.Clear();
DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag;
ListViewItem.ListViewSubItem[] subItems;
ListViewItem item = null;
//If selected is a directory show the following
foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories())
{
item = new ListViewItem(dir.Name, 0);
subItems = new ListViewItem.ListViewSubItem[]
{new ListViewItem.ListViewSubItem(item, "Directory"),
new ListViewItem.ListViewSubItem(item,
dir.LastWriteTime.ToShortTimeString())};
item.SubItems.AddRange(subItems);
listView_Families.Items.Add(item);
}
//If selected is a File show the following
foreach (FileInfo file in nodeDirInfo.GetFiles())
{
string fileFullName = file.FullName;
item = new ListViewItem(file.Name, 1);
subItems = new ListViewItem.ListViewSubItem[]
{
new ListViewItem.ListViewSubItem(item, file.FullName),
new ListViewItem.ListViewSubItem(item, file.Length.ToString())
};
item.SubItems.AddRange(subItems);
//add items to list view
listView_Families.Items.Add(item);
}//end loop
listView_Families.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
}
答案 0 :(得分:0)
您从未设置ListViewItem.ImageIndex
因此它始终为0,因此仅显示第一张图像。
您应该确定要为每个项目显示哪个图像并设置正确的索引!
LargeImageList
与ListView
仅松散关联。要将Images
与Items
实际连接起来,您需要设置每个Items.ImageIndex
的{{1}}!这样,您可以为许多项目重复使用图像,也可以自由更改项目的ImageIndex ..
从您的代码中我不知道您想如何决定哪个是正确的形象..