Разница между ISupportInitialize (BeginInit/EndInit) и SuspendLayout/ResumeLayout

Может кто-нибудь объяснить, в чем разница между использованием методов интерфейса ISupportInitialize (BeginInit/EndInit) и использованием SuspendLayout/ResumeLayout?

Является ли ISupportInitialize ТОЛЬКО используемым во время инициализации конструкции/ "начальной"... или может использоваться позже, когда вы хотите добавить новые дочерние элементы управления в существующий родительский элемент управления?

Любые особые отличия?

Я очень ценю вашу помощь!

Спасибо,

Пато

Ответ 1

Интерфейс ISupportInitialize живет в System.dll и представляет собой довольно общую концепцию в области компонентов. Кстати, многие компоненты System.Windows.Forms являются компонентами, а также Windows.Forms является основным пользователем материалов ComponentModel.

Приостановить/ResumeLayout - это чистая вещь Windows.Forms и действительно говорит, что элемент управления не пытается и не делает графику, пока вы, например. добавление дочерних элементов управления или изменение свойств.

Ответ 2

Исправьте используемый код в VB.Net для этого, большинство декомпиляторов считают это неправильным.

CType(Me.pictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()