使用用户控件C#

时间:2016-12-21 12:06:32

标签: c# events user-controls

假设如果我在自定义用户控件上有一个按钮从表单中删除控件(让我们称之为formX),则将其放入。

private void btnClose_Click(object sender, EventArgs e)
{
    this.ParentForm.Controls.Remove(this);
}

现在关闭此UserControl后,我希望调用formX中的方法。

我尝试过这样的事情:

discount.ControlRemoved += new ControlEventHandler(discount_ControlRemoved);

void UserControl_ControlRemoved(object sender, ControlEventArgs e)
{
    CallMethod();
}

但是这不起作用,当从formX中删除userControl时,甚至在调试器中都没有调用该事件。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您应该使用的事件是父容器上的ControlRemoved事件,在这种情况下可能是Form。您可以通过多种方式实现这一目标,有些可能比其他方式更好,具体取决于您想要做什么,但以下情况至少应该按照您的要求进行:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.ControlRemoved += new ControlEventHandler(Form1_ControlRemoved);
    }

    void Form1_ControlRemoved(object sender, ControlEventArgs e)
    {
        if (e.Control.Name == "NameOfUserControl") CallMethod();
    }

    private void CallMethod()
    {
        // Do stufff...
    }
}

这假设您已将User Control实例命名为" NameOfUserControl"。有多种方法可以检查要删除的控件是否正确。您还可以通过在控件本身中执行此操作,同时使用委托来回调父窗体等,使其更加动态......这只是一个基本示例。