未调用 WinForms Form_Load
WinForms Form_Load not called
我有一个从基本表单继承的表单。 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
的加载事件未明确加载。事件处理程序也可用,因为它们是通过表单设计器创建的。
我用以下方法打开我的表格:
public static DialogResult ShowForm<T>(this Form form, bool canShowForm) where T : Form, new()
{
return new T().ShowDialog(form);
}
一切正常,但突然之间,baseform
和 childform
加载事件中的代码都没有被调用。
注意:我在 childform
构造函数中调用 InitializeComponent
,它没有引发任何异常。
这里有什么问题?
我想事件处理程序没有被订阅(由于覆盖了基础 class' InitializeComponents
)。将其添加到构造函数中:
this.Load += BaseForm_Load;
专业提示:您可能需要查看重写 Form.OnLoad
。如果您这样做,它会自动调用派生的 classes 上的 OnLoad
,因此它不需要事件订阅。
类似于:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e); // let the base class do it's OnLoad
//Do your own stuff...
}
我有一个从基本表单继承的表单。 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
的加载事件未明确加载。事件处理程序也可用,因为它们是通过表单设计器创建的。
我用以下方法打开我的表格:
public static DialogResult ShowForm<T>(this Form form, bool canShowForm) where T : Form, new()
{
return new T().ShowDialog(form);
}
一切正常,但突然之间,baseform
和 childform
加载事件中的代码都没有被调用。
注意:我在 childform
构造函数中调用 InitializeComponent
,它没有引发任何异常。
这里有什么问题?
我想事件处理程序没有被订阅(由于覆盖了基础 class' InitializeComponents
)。将其添加到构造函数中:
this.Load += BaseForm_Load;
专业提示:您可能需要查看重写 Form.OnLoad
。如果您这样做,它会自动调用派生的 classes 上的 OnLoad
,因此它不需要事件订阅。
类似于:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e); // let the base class do it's OnLoad
//Do your own stuff...
}