假设如果我在自定义用户控件上有一个按钮从表单中删除控件(让我们称之为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时,甚至在调试器中都没有调用该事件。
我该怎么做?
答案 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"。有多种方法可以检查要删除的控件是否正确。您还可以通过在控件本身中执行此操作,同时使用委托来回调父窗体等,使其更加动态......这只是一个基本示例。