不调用继承窗体上的 OnLoad 事件

本文关键字:OnLoad 事件 窗体 调用 继承 | 更新日期: 2023-09-27 18:35:00

>我有 3 种形式

  1. 没有onload event FormBase

  2. FormBaseDetail : FormBase ->在此窗体上,我使用可视化设计器创建了一个on_load event

  3. FormBoxDetail : FormBaseDetail ->在此窗体上,我还使用可视化设计器创建了一个 on load event

创建FormBoxDetail时,将调用 FormBaseDetail 上的onload event,但不调用 FormBoxDetail 上的onload event。这永远不会被调用。

我做错了什么?

public partial class FormBase : Form
{
    public FormBase()
    {
        InitializeComponent();
    }
}
public partial class FormBaseDetail : FormBase
{
    public FormBaseDetail()
    {
        InitializeComponent();
    }
    private void FormBaseDetail_Load(object sender, EventArgs e)
    {
        MessageBox.Show("FormBaseDetail");
    }
}
public partial class FormBoxDetail : Test_app.FormBaseDetail
{
    public FormBoxDetail()
    {
        InitializeComponent();
    }
    private void FormBoxDetail_Load(object sender, EventArgs e)
    {
        MessageBox.Show("why am i not getting called");
    }
}

不调用继承窗体上的 OnLoad 事件

无法

触发 Load 事件的原因只有两个:

  1. 事件处理程序FormBoxDetail_Load未附加到Load事件。但你说这不是你的情况。
  2. 您没有加载FormBoxDetail .确保正在创建FormBoxDetail类的实例。可能您正在使用FormBaseDetail。确保您使用的是正确的表单类。

此处将触发两个事件处理程序:

var form = new FormBoxDetail();
form.Show();

第一个是FormBaseDetail_Load处理程序,然后是FormBoxDetail_Load处理程序。

它只是发生在我身上,当我从一个可执行项目中实例化(新(一个类,例如 MyClassess c = new MyDll.MyClass(par(,并且表单没有加载。我发现我忘了加载它:Application.Run(c(;

问候