While I like that approach, I wonder whether getting rid of the pictureboxes is even the best solution? You've already seen that disposing all the controls has a cost, as does creating them. You can't possibly be seeing hundreds of images, let alone thousands, so how many can you be seeing at any one time? I'd make that many controls and never dispose/create any more than that.

Having said that, there are some advantages to a FlowLayoutPanel that could top a simpler design, when it comes to images. For example, I have a form that shows simple images in what amounts of a horizontal listbox. I figured out that I could only show three images at a time, so I put three pictureboxes on a panel along with a horizontal scrollbar. There is a list of images, and the pictureboxes are loaded from that list based on the position of the scrollbar. Every time I move the bar, the pictureboxes are re-loaded with the correct set of images for the new position of the bar. What I don't get with this design, and what you might get with a FlowLayoutPanel, is a partial image. When I move the scrollbar, I see three images. Those images can look like they are scrolling left or right as I move the scroll bar, but that's really just a trick of the mind, because all that is really happening is that the image is being loaded into the picturebox to the left or right. You can't scroll the bar such that you see two images, along with half of the image before those two and half of the image after those two, so you can't be 'part way' through an image. I don't know whether you get that effect with a FlowLayoutPanel or not, and I don't know whether it matters.

Still, I could have dozens of images (not 10,000 by any stretch of the imagination), yet no matter how many images I have, there are only three picturebox controls. No more are created and none are destroyed.