2011-11-17 18 views
5

ho qualcosa di simile a questo:Attivato nella baseclass non attivato?

public class WinformBase : Winform 
{ 
    public WinformBase(){ 
     this.Activated += new System.EventHandler(this.MyTest1_Activated); 
    } 
    private void MyTest1_Activated(object sender, EventArgs e) 
    { 
     MyController.TopFormActivated(this); 
    } 
} 

public class MyForm : WinformBase 
{ 
     public MyForm(){ 
     this.Activated += new System.EventHandler(this.MyTest2_Activated); 

     } 
     private void MyTest2_Activated(object sender, EventArgs e) 
     { 
     MyController.TopFormActivated(this); 
     } 
} 

Il problema è che l'evento viene attivato solo in MyForm e non nella base Winform?
Perché è così, e come posso avere l'evento attivato anche nello WinformBase?

risposta

5

Questa è la mia soluzione al problema:

public class WinformBase : Winform 
{ 
    public WinformBase(){ 
    } 

    protected override void OnActivated(EventArgs e) 
    { 
     base.OnActivated(e); 
     Controller.MyMethod(); 
    } 

} 

public class MyForm : WinformBase 
{ 
     public MyForm(){ 
     } 
} 
Problemi correlati