Вы можете сделать это, используя ListView
в виртуальном режиме, а затем добавив сгенерированные миниатюры к LargeImageList
во время события RetrieveVirtualItem
(если их там еще нет).
Если вы хотите, чтобы большая часть работы была выполнена для вас, вы можете использовать FastObjectListView
из проекта ObjectListView (обертка с открытым исходным кодом вокруг .NET WinForms ListView) и затем следовать этому рецепту о том, как использовать изображения, загруженные из базы данных . Ваши изображения, конечно, были бы эскизами, созданными из источника, а не изображениями из базы данных, но логика та же.