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

c#:如何识别按钮(属于父窗体)是从哪个子窗体单击的?,c#,forms,inheritance,C#,Forms,Inheritance,我有4个ChildForm(1..4),其基类是ParentForm 父窗体有一个按钮 有没有办法知道按钮实际上是从哪个子窗体单击的?控件有一个或属性,您可以使用其中的一个吗?是的,经过一点反思,您可以这样做。在eventhandler中,用户使用发送者对象获取父对象的类型: Type ChildFormType = ((Button)sender).Parent.GetType(); 然而,不得不使用反射(查询类型系统)通常是设计糟糕的标志。在某种实现中,ParentForm作为抽象的acc

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

父窗体有一个按钮


有没有办法知道按钮实际上是从哪个子窗体单击的?

控件有一个或属性,您可以使用其中的一个吗?

是的,经过一点反思,您可以这样做。在eventhandler中,用户使用
发送者
对象获取父对象的类型:

Type ChildFormType = ((Button)sender).Parent.GetType();

然而,不得不使用反射(查询类型系统)通常是设计糟糕的标志。在某种实现中,
ParentForm
作为抽象的
accept
方法可能是一种解决方案。

我知道您的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)
    {
    }

然后在Click事件处理程序的派生表单中重写特定的\u button1\u Click方法。您可以执行类似于
的操作吗?