Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未调用oninherited窗体上的OnLoad事件_C#_Winforms_Inheritance - Fatal编程技术网

C# 未调用oninherited窗体上的OnLoad事件

C# 未调用oninherited窗体上的OnLoad事件,c#,winforms,inheritance,C#,Winforms,Inheritance,我有三张表格 FormBase没有onload事件 FormBaseDetail:FormBase-> 在这个表单上,我使用可视化设计器创建了一个加载事件 FormBoxDetail:FormBaseDetail-> 在这个表单上,我还使用可视化设计器创建了一个onload事件 创建FormBoxDetail时,调用FormBaseDetail上的onload事件,但调用FormBoxDetail上的onload事件。这是从来没有被称为 我做错了什么 public partial class F

我有三张表格

  • FormBase
    没有
    onload事件

  • FormBaseDetail:FormBase
    -> 在这个表单上,我使用可视化设计器创建了一个加载事件

  • FormBoxDetail:FormBaseDetail
    -> 在这个表单上,我还使用可视化设计器创建了一个on
    load事件

  • 创建
    FormBoxDetail
    时,调用
    FormBaseDetail
    上的
    onload事件
    ,但调用
    FormBoxDetail
    上的
    onload事件
    。这是从来没有被称为

    我做错了什么

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

    无法触发加载事件的原因只有两个:

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

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

    第一个是
    FormBaseDetail\u Load
    处理程序,然后是
    FormBoxDetail\u Load
    处理程序。

    我碰巧从一个可执行项目中实例化(新)一个类e.a.MyClasss c=new MyDll.MyClass(par),而表单没有加载。 我发现我忘了加载它: 应用程序。运行(c)


    请转到FormBoxDetail.designer.cs,查看是否将
    FormBoxDetail\u Load
    映射到
    this.Load
    事件。@GuidoG,正如您所看到的,加载事件使用了不同的事件处理程序-FormBoxDetail\u Load,而不是FormBoxDetail_Load@GuidoG您的代码中没有
    FormBaseBox
    。在你的代码中没有
    FormBaseList
    编辑了我的问题,等一段时间,因为有个叫Sergey的家伙在编辑我的问题code@GuidoG有个叫Sergey的家伙为了从代码中删除无用的名称空间定义并使其可读而做了一些肮脏的工作。在您的代码表单中仍然没有创建类似以下FormBoxDetail表单=new FormBoxDetail()的
    FormBaseBox
    ;在FormBoxDetail.Designer.cs中有this.Load+=new System.EventHandler(this.FormBoxDetail\u Load);FormBoxDetail上有用户控件,比如文本框和FormBaseDetail没有的东西,所以我可以确定正确的表单是loaded@GuidoG刚刚试过你的代码。如果创建了正确的表单并附加了两个事件处理程序,那么我会看到两个消息框。我不明白为什么这对您有效而对我无效。我剥离了表单,只包含您在我的问题中可以看到的代码,但在这里它仍然不起作用。我正在使用visual studio 2013和framework 4。5@GuidoG这是我的名片,请试一试