我有一个用户可以放在窗体上的.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的流媒体系统调用加载 控件的形式被加载到内存后自动使 控制可以完成这取决于形式与其他 对象的任何初始化。
有很多不同的可能的方法可以做到这一点。哪一种是习惯性的或适当的取决于你想要初始化的东西。当然,设计师并没有做任何神奇的事情,只是在控制上设置属性。设计自定义控件的标准规则是,应该能够以任何顺序设置属性,无论是由用户还是由设计人员设置。 – 2012-02-17 23:43:46
实现ISupportInitialize接口。 – 2012-02-18 00:52:14
@HansPassant
我实现了ISupportInitialize,并将代码放在EndInit()中,但它从未被调用过。应该实施ISupportInitialize做些什么?我收回。一旦你创建了两次*,设计者在'InitializeComponent'期间添加了对'EndInit()'的调用。真的应该以答案的形式表达这个词。 – 2012-02-21 15:36:09