我有一个继承自基本表单的表单。 baseform_load
和childform_load
事件中都有代码。
BaseForm看起来像这样:
public partial class BaseForm : Form
{
public BaseForm()
{
InitializeComponent();
}
private void BaseForm_Load(object sender, EventArgs e)
{
//Do stuff...
}
}
子表单可能如下所示:
public partial class ChildForm : BaseForm
{
public ChildForm ()
{
InitializeComponent();
}
private void ChildForm _Load(object sender, EventArgs e)
{
//Do stuff...
}
}
baseform
的load事件未显式加载。事件处理程序也可以使用,因为它们是通过表单设计器创建的。我使用以下方法打开表单:
public static DialogResult ShowForm<T>(this Form form, bool canShowForm) where T : Form, new()
{
return new T().ShowDialog(form);
}
一切工作正常,但是突然之间,都没有调用
baseform
和childform
加载事件中的代码。注意:我正在
InitializeComponent
构造函数中调用childform
,它不会引发任何异常。怎么了
最佳答案
我猜事件处理程序没有被订阅(由于覆盖了基类的InitializeComponents
)。将此添加到构造函数中:
this.Load += BaseForm_Load;
专家提示:您可能想研究覆盖的
Form.OnLoad
。如果这样做,它将自动在派生类上调用OnLoad
,因此不需要事件订阅。就像是:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e); // let the base class do it's OnLoad
//Do your own stuff...
}