Как я могу сказать элемент управления НЕ перерисовывать себя? - PullRequest
1 голос
/ 30 ноября 2010

Я пробовал что-то вроде:

horizontalPictureScroller1.SuspendLayout();
horizontalPictureScroller1.DeleteSelectedImages();
horizontalPictureScroller1.ResumeLayout();

Но визуально все еще отстает, когда я запускаю метод DeleteSelectedImages ().

Есть ли какой-либо способ вручную указать элементу управления НЕ перерисовывать себя, пока я не скажу ему снова начать рисовать себя?

Использование Windows Forms и .NET 4

1 Ответ

2 голосов
/ 30 ноября 2010

Полагаю, ваша проблема в том, что ваш экран обновляется во время операции удаления, что приводит к мерцанию.

Методы SuspendLayout и ResumeLayour только приостанавливают макет элемента управления .Он не останавливает перерисовку или изменение размера элемента управления.

Вы должны включить DoubleBuffering для элемента управления.

Вам следует создать новый класс элемента управления, полученный из элемента управления WinForms, который выиспользуете здесь.В конструкторе этого класса включите двойную буферизацию, используя метод SetStyle.

Предполагая, что ваш элемент управления horizontalPictureScroller1 является PictureBox -

class MyControl : System.Windows.Forms.PictureBox
    {
        public MyControl()
        {
            this.SetStyle(ControlStyles.DoubleBuffer |
                ControlStyles.UserPaint |
                ControlStyles.AllPaintingInWmPaint,
                true);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...