2011-11-17 36 views
5

Tôi có một cái gì đó như thế này:Kích hoạt trong baseclass không được kích hoạt?

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

Vấn đề là sự kiện này chỉ được kích hoạt trong MyForm và không có trong cơ sở Winform?
Tại sao vậy và tôi có thể kích hoạt sự kiện trong số WinformBase như thế nào?

Trả lời

5

Đây là giải pháp của tôi cho vấn đề:

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

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

} 

public class MyForm : WinformBase 
{ 
     public MyForm(){ 
     } 
} 
Các vấn đề liên quan