form1的form1_load事件中有一些操作,包括定义的方法,
form2继承自form1,form2的form2_load事件如何重写form1_load事件呢?请高手指教!

解决方案 »

  1.   

    form2.Load += new EventHandler(Form2_Load);
    以上语句放在form2的构造函数中即可。
    Form2_Load 是你自定义的。
      

  2.   

    用virtual 和override 关键字
    form1
    protected virtual form1_load()
    {
    //代码
    }
    form2
    protected override form1_load()
    {
    //代码
    }
      

  3.   

    不好意思,掉了函数类型了,加了个void
    用virtual 和override 关键字 
    form1 
    protected virtual  void form1_load() 

    //代码 

    form2 
    protected override void form1_load() 

    //代码 
      

  4.   

    什么是事件form2_load 这是什么? 搞清楚没有哦?
      

  5.   

    form2.Load += new EventHandler(Form2_Load); 
    以上语句放在form2的构造函数中即可。 
    Form2_Load 是你自定义的。
      

  6.   

    孤星的方法是不行的。
    Form2_Load是 EventHandler委托指向的方法。
    form2继承form1。
    load事件已经在form1里注册.只需在form2里重写改事件方法即可.
      

  7.   

    今天凌晨俺发完本帖后,我是这样暂时解决问题的:
    1、在form1的 Form1_Load 语句前,定义一个虚方法 protected virtual AA(),AA()中包含了所有Form1_Load时要做的动作,然后在Form1_Load中调用AA();
    2、这样,在form1的派生窗体Form2中重写AA()方法,就相当于重写了Form1_Load。晚上回去试一下:abcyzq 大侠和DianeVan 、孤星大侠的方法。
    谢谢支持!另外,hiddkiller 批评的似乎有道理:但请说得更明确些啊。form2_load 是一个方法,但我的理解是在form2启动的事件发生时调用了这个load 方法,我的理解有什么问题么?恳请赐教。
      

  8.   

    不是批评,我只是觉得我们好像都爱把 事件处理方法称为事件;个人觉得重写事件 如event Load 应该是重写它的get set 方法;
    form1_load 只不过是符合 Load事件委托类型的方法而已且 订阅了Load事件.
    要达到你上述需求:在form1 
    你可以直接重写 OnLoad (Load事件触发方法) 方法,把form1_load里的操作放进来
    在form2 里再一次重写 OnLoad 方法以为你只是一次 Load+= 讨论讨论 不存在批评 多多指教