Как различаются между собой Paint-события: Invalidate, Update и Refresh?
Invalidate весь объект перерисовывается заново; обычно перерисовывается только часть бывшая перед этим закрытой
Update незамедлительная перерисовка
Refresh Invalidate + Update
Here is the translation of the text into Russian:
Вопрос о событиях рисования в Windows Forms!
В Windows Forms методы Invalidate, Update и Refresh - три связанных метода, которые можно использовать для управления процессом рисования контрола. Вот что каждый из них делает:
Invalidate: Этот метод маркирует весь контрол как needing to be redrawn (недостаточно). Когда вы вызываете Invalidate, Windows Forms отправляет сообщение о рисовании (WM_ PAINT) контролу, который затем рисует себя целиком заново от начала. Обратите внимание, что это не обязательно significa, что весь контрол действительно будет перерисован; это просто значит, что Windows Forms думает, что он может быть перерисован.
Когда вы используете Invalidate, вы essentially говорите Windows Forms: "Прошу, я думаю, что что-то изменилось, поэтому пожалуйста, перерисуйте меня!" Это может произойти, когда изменяется свойство (например, текст метки), или когда размер или положение контрола изменяются.
Update: Этот метод отправляет сообщение о рисовании (WM_ PAINT) контролу сразу, не дожидаясь, пока Windows Forms определит, что контрол needs to be repainted. В других словах, Update forces контрол repaint himself right away.
Когда вы используете Update, вы essentially говорите Windows Forms: "Я знаю, что что-то изменилось, поэтому пожалуйста, перерисуйте меня сейчас!" Это может быть полезно, когда вам нужно обеспечить, что контрол будет обновлен сразу, а не дожидаясь следующего сообщения о рисовании.
Refresh: Ах, но что это? Refresh - это просто псевдоним для Invalidate, последовавший за Update. Поэтому, когда вы вызываете Refresh, это эквивалентно вызову обоих Invalidate и затем Update.
В других словах, Refresh говорит: "Прошу, я думаю, что что-то изменилось, поэтому invalidate меня (т. е. маркируйте меня как needing to be repainted) и then update me right away!" Это удобный короткий путь, когда вам нужно both invalidate и immediately repaint контрол.
В целом:
Invalidate: Маркирует контрол as needing to be repainted (но не forces его рисовать).
Update: Forces контрол repaint himself immediately.
Refresh: Invalidate and then update контрол, все в одном удобном методе!
Надеюсь, это поможет вам лучше понять разницу между этими тремя методами. Пожалуйста, дайте мне знать, если у вас есть какие-либо дополнительные вопросы!
Paint-события в Windows Forms делятся на три типа: Invalidate, который приводит к полному перерисованию объекта, Update, который обеспечивает немедленную перерисовку только закрытой части объекта, и Refresh, который является комбинацией этих двух процессо
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.