正在创建用于隐藏不起作用的控件的自定义事件

本文关键字:控件 自定义 事件 不起作用 隐藏 创建 用于 | 更新日期: 2024-05-25 13:04:41

这是我的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();");
    }

我想发生的是,当用户控件被隐藏时,我想在我的主窗体中触发一个事件,但不起作用,我缺少什么?请帮忙。谢谢

正在创建用于隐藏不起作用的控件的自定义事件

您对事件引发器(DoSomething)的命名约定令人困惑,您的代码不会调用DoSomething(或引发事件SomethingHappened),那么它怎么会为您激发呢?在用户控制类中添加以下代码:

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