在c#中用户滚动的列表视图中动态加载项目(图像)

时间:2011-12-26 13:21:57

标签: c# .net winforms image listview

我正在使用附加到图像列表的列表视图控件,以在表单上的列表视图中显示图像的缩略图。我使用循环和以下内容将文件夹中的图像添加到图像列表码 ImageList1.Images.Add(Image.FromFile("c:\\windows\\img.bmp"));

但是如果有很多图像,则会抛出内存不足异常(即使在处理之后)。我想将图像加载到当前对用户可见的列表视图中,即:在用户滚动时动态加载图像。如果5个图像在用户视图中,我想只加载5个图像,如果用户滚动我想获得当前应该对用户可见的图像索引并仅加载这些图像。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

就我个人而言,我在ImageListView方面有很好的经验,包括技术(表现)和作者答复(质量和速度)。

每当我需要可视图像列表时,我都会将其用作ListView的替代品。

答案 1 :(得分:0)

我非常天真的方法是扩展ImageList类,添加文件位置集合并覆盖图像获取器以在第一次请求时加载文件(即缓存未命中)。

否则,我希望您应该考虑处理ListView事件以滚动和/或呈现列表项。 (我认为它们存在,暂时没有处理UI)