我有4个ChildForm(1..4),其基类是ParentForm。
ParentForm有一个按钮。
有没有办法知道哪个ChildForm是实际点击的按钮?
答案 0 :(得分:0)
答案 1 :(得分:0)
是的,通过一些反思,你可以做到。在eventhandler用户中,sender
对象获取父类的类型:
Type ChildFormType = ((Button)sender).Parent.GetType();
然而,必须使用反射(查询类型系统)通常是糟糕设计的标志。某种Visitor Pattern实现,其中ParentForm
作为抽象accept
方法可能是一种解决方案。
答案 2 :(得分:0)
据我所知,你的4个表单有4个不同的类,都来自ParentForm。如果是这种情况,我会以这种方式实现ButtonClicked方法:
private void button1_Click(object sender, EventArgs e)
{
// part common to all the forms (possibly void)
specific_button1_Click(sender, e);
// part common to all the forms (possibly void)
}
protected void specific_button1_Click(object sender, EventArgs e)
{
}
然后覆盖派生表单中的specific_button1_Click方法