OnLoad事件oninherited表单不会被调用

时间:2014-12-22 08:17:06

标签: c# winforms inheritance

我有3个表格

  1. FormBase没有onload event

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

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

  4. 创建FormBoxDetail后,onload event上的FormBaseDetail被调用,但onload event上的FormBoxDetail被调用。这从未被调用过。

    我做错了什么?

    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");
        }
    }
    

2 个答案:

答案 0 :(得分:2)

只有两个原因导致无法触发Load事件:

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

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

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

答案 1 :(得分:0)

当我从一个可执行项目中实例化(新)一个类e.a时,它恰好发生在我身上。 MyClasss c = new MyDll.MyClass(par),并且表单未加载。 我发现我忘记加载它: Application.Run(C);

此致