从子表单中触发父表单中的方法

时间:2014-01-13 12:11:58

标签: c# winforms parent-child

我在从一个子表单触发各种父表单中的方法时遇到问题。此子表单用于获取用户输入并将其传递给父表单。由于这种输入对于各种类型的工作是相同的(每种类型都以它自己的形式实现),我从各种形式称这种子形式。

到目前为止,我已经解决了这个问题:

在儿童形式中有一段代码:

private void button3_Click(object sender, EventArgs e)
{            
    if (Parent.GetType() == typeof(MyType))
    {
        if ((Parent as MyType).MyFunction()))
        {
            this.Close();
        }
    }

}

Parent是object类型的属性。使用以下代码从父表单调用此子表单:

MyChildForm IPU = new MyChildForm();
IPU.Parent = this;            
IPU.ShowDialog();

这种方法的问题在于我最终会得到数十个if-else块,每个类型的父表单需要一个这种子表单用于输入。我的问题是 - 有没有办法缩短这段代码,以便它适用于每个具有名为MyFunction的函数的类型?

我尝试过这样的事情:

(Parent as typeof(Parent.GetType())).MyFunction()

但是我得到一个错误'Parent是一个属性但是被用作类型'

1 个答案:

答案 0 :(得分:2)

您可以创建界面

public interface IParent
{
    bool MyFunction();
}

并设置Parent类型的IParent属性。然后让您的父表单实现此接口。用法如下:

private void button3_Click(object sender, EventArgs e)
{            
    if (Parent.MyFunction())        
        this.Close();
}
相关问题