c#:如何识别哪个子窗体是单击按钮(属于parentForm)?

时间:2011-07-24 20:06:36

标签: c# forms inheritance

我有4个ChildForm(1..4),其基类是ParentForm。

ParentForm有一个按钮。

有没有办法知道哪个ChildForm是实际点击的按钮?

3 个答案:

答案 0 :(得分:0)

控件具有ParentPage属性,您可以使用其中一种吗?

答案 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方法