Трудно сказать из фрагмента. Стандартная ошибка - рисовать через Control.CreateGraphics () вместо метода OnPaint (). Не будет работать, Windows позволяет запускать метод OnPaint, когда части элемента управления раскрываются. Который стирает все, что вы нарисовали. Другой режим сбоя происходит от элемента управления, который является оберткой для собственного элемента управления Window. UserPaint не поддерживается для этих типов элементов управления, собственный код Windows должен рисовать.
Это ясно из снимка экрана, обратите внимание, как текст в шахматном порядке. Это потому, что переопределение OnPaint () использует свойство e.ClipRectangle, чтобы выяснить, где рисовать. Это значение всегда меняется, когда вы медленно перетаскиваете окно через элемент управления, оно только сообщает вам, какую часть элемента управления необходимо перерисовать. не говорит вам , где рисовать. Это должно основываться на границах элемента управления, обычно это прямоугольник от (0,0) до (ClientSize.Width, ClientSize.Height).
Всегда используйте e.ClipRectangle только для оптимизации чертежа. Как пропуск дорогой детали чертежа, когда он находится за пределами прямоугольника отсечения. В остальном он маленький, Windows уже достаточно хороша для автоматического отсечения.