У меня есть элемент управления .NET, который пользователь может удалить на форме.Как узнать, когда инициализируется мой элемент управления?
Visual Studio создает InitializeComponent
, который вызывается из конструктора формы хостинг-:
public EditItemForm()
{
InitializeComponent();
}
Это автоматически сгенерированный метод, в автоматически сгенерированный файл, инициализирует свой контроль на основе правил serializiblity дизайнера. например .:
private void InitializeComponent()
{
...
this.lvResults = new Contoso.Controls.VirtualGrobber();
...
//
// lvResults
//
this.lvResults.BorderStyle = System.Windows.Forms.BorderStyle.None;
...
//FrobGrobberForm
...
this.Controls.Add(this.lvResults);
...
}
Как я, управление сидит на чьей-то форме, знать, когда все дизайнер сериализация сделана, и я «готов»?
В Delphi, механизм, который упорядочивает в элементе управления автоматически вызывает метод Loaded
каждого элемента управления:
инициализирует контроль после того, как он будет загружен из потока.
procedure Loaded; override;
Описания
В VCL потоковых системные вызовов Загруженный автоматически после того, как форма элемента управления загружаются в память, так что управление может завершить любую инициализацию, которые зависят от других объектов в форме.
Существует несколько различных способов, которыми вы могли бы это сделать. Какой из них идиоматичен или соответствует действительности, зависит от того, что именно вы пытаетесь инициализировать.Конечно, дизайнер не делает ничего волшебного, это просто настройка свойств вашего контроля. И стандартное правило проектирования пользовательских элементов управления заключается в том, что свойства должны быть установлены в любом порядке, будь то пользователем или дизайнером. –
Внедрение интерфейса ISupportInitialize. –
@HansPassant
i реализовал ISupportInitialize и поместил код в EndInit(), но он никогда не вызывался. Должна ли реализация ISupportInitialize что-то делать?Я забираю его обратно. После создания * дважды * дизайнер добавляет вызов 'EndInit()' во время 'InitializeComponent'. На самом деле должна фраза, что в форме ответа. –