gpt4 book ai didi

c# - WinForms Form_Load 未调用

转载 作者:行者123 更新时间:2023-12-01 16:20:36 24 4
gpt4 key购买 nike

我有一个继承自基本表单的表单。 baseform_loadchildform_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);
}

一切工作正常,但突然之间,baseformchildform 加载事件中的代码都没有被调用。

注意:我在 childform 构造函数中调用 InitializeComponent,它不会引发任何异常。

这里出了什么问题?

最佳答案

我猜想事件处理程序没有被订阅(由于覆盖了基类的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...
}

关于c# - WinForms Form_Load 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27794532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com