Да, это не работает. Вот класс, который несколько улучшает его:
using System;
using System.Windows.Forms;
class MyFlowLayoutPanel : FlowLayoutPanel {
public MyFlowLayoutPanel() {
this.DoubleBuffered = true;
}
protected override void OnScroll(ScrollEventArgs se) {
this.Invalidate();
base.OnScroll(se);
}
}
Скомпилируйте и перетащите его из верхней части панели инструментов на форму. Однако он не может решить фундаментальную проблему, параметр «Показать содержимое окна при перетаскивании». Это системный параметр, он будет включен для более поздних версий Windows. Когда он включен, Windows сама прокручивает содержимое панели, а затем просит приложение нарисовать ту часть, которая была обнаружена при прокрутке. Метод OnScroll отменяет это, гарантируя, что все окно будет перекрашено, чтобы сохранить фоновое изображение на месте. Конечный результат не очень хорош, вы увидите, что изображение делает «pogo», прыгая вверх и вниз во время прокрутки.
Единственное исправление для этого - отключение системной опции. Это не практичное решение, пользователям нравится опция, и она влияет на каждую программу, а не только на вашу. Если вы не можете жить с Pogo, вам придется отказаться от прозрачности.