我们在继承表单的初始化方面遇到了意外问题。我期待这个工作:
public class MyChildForm : BaseForm
{
public MyChildForm() {
InitializeComponent();
}
public overrides void EndInit() {
base.EndInit();
//Do special tweaks to buttons on MyChildForm!
DoYoAwesomeThang(myButton);
}
}
然而它崩溃是因为MyChildForm上的按钮尚未初始化。在调查时发现这是由于我们实例化MyChildForm时的以下事件序列:
名为
BaseForm.InitializeConstructor()名为
BaseForm.InitializeConstructor触发EndInit()
MyChildForm.EndInit()被调用....
...但MyChildForm.InitializeComponent()尚未调用,所以我没有按钮!!
所以我理解了这个问题,但我很困惑为什么我做错了。最后,我在InitializeComponent()之后将按钮调整放在MyChildForm构造函数中,这样可行,但我认为那种事情是EndInit()的工作。
我的问题:
将按钮调整放在EndInit()中是不是错误?
是否无法实现在继承表单上实现的EndInit()?
答案 0 :(得分:0)
EndInit
将被多次调用。有时,在调用EndInit
时,将会有一些尚未初始化的控件。可能,Loaded
事件正是您所寻找的。 p>