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