2013-11-29 71 views
0

這裏的控制是我的代碼在我userControl創建自定義事件隱藏不工作

public partial class UserControlHomeScreen : UserControl 
{ 
    public event EventHandler SomethingHappened; 

    public void DoSomething() 
    { 
     EventHandler handler = SomethingHappened; 
     if (handler != null) 
     { 
      handler(this, EventArgs.Empty); 
     } 
    } 

    public void HandleEvent(object sender, EventArgs args) 
    { 
     MessageBox.Show("Wafak."); 
    } 

    public UserControlHomeScreen() 
    { 
     InitializeComponent(); 
    } 

    private void btnAverageDailyBal_Click(object sender, EventArgs e) 
    { 
     this.Tag = 0; 
     this.Hide(); 
    } 

    private void btnComputeTransferPricing_Click(object sender, EventArgs e) 
    { 
     this.Tag = 1; 
     this.Hide(); 
    } 
} 

這裏是我的代碼在我的主要形式

private void HomeScreen() 
    { 
     uHomeScreen = new UserControlHomeScreen(); 
     uHomeScreen.Dock = DockStyle.Fill; 
     //uHomeScreen.Disposed += new EventHandler(uHomeScreen_Disposed); 
     uHomeScreen.SomethingHappened += new EventHandler(uHomeScreen_SomethingHappened); 
     panelMain.Controls.Add(uHomeScreen); 
    } 

    void uHomeScreen_SomethingHappened(object sender, EventArgs e) 
    { 
     MessageBox.Show("throw new NotImplementedException();"); 
    } 

我希望發生的是,當usercontrol被隱藏我想在我的主窗體中觸發一個事件,但不起作用,我錯過了什麼?請幫忙。謝謝!

回答

1

您對事件提升者(DoSomething)的命名約定很混亂,您的代碼不會調用DoSomething(或引發事件SomethingHappened),那麼它如何爲您啓動?在您的用戶控件類中添加以下代碼:

//override the OnVisibleChanged 
protected override void OnVisibleChanged(EventArgs e){ 
    if(!Visible) DoSomething(); 
} 
+1

它的工作原理謝謝.. – SHINHAN