从C#中的MDI Parent调用MDI Child的方法

时间:2012-07-14 19:12:45

标签: parent mdi

我有两种形式。一个是MDI父母,另一个是MDI孩子。单击父项上的按钮时,将打开子项的表单。我编写了一个代码来防止表单重复。那些方法是:

public Form IsFormAlreadyOpen(Type FormType)
    {
        foreach (Form OpenForm in Application.OpenForms)
        {
            if (OpenForm.GetType() == FormType)
                return OpenForm;
        }
        return null;
    }

public static Form1 f1;
public void open_Form1()
    {
        Form UForm = null;
        UForm = IsFormAlreadyOpen(typeof(Form1));

        if (UForm == null)
        {
            UForm = new Form1();
            UForm.MdiParent = this;
            UForm.Show();
        }
    }

这段代码可在MDI Parent表单中找到。然后单击按钮,调用方法“open_Form1()”并打开子表单。

但问题是如何访问以子窗体形式编写的公共方法? 在子表单上我有这段代码。

    public void somefunction()
    {
        /*code*/
    }

如何从MDI Parent调用此方法?

1 个答案:

答案 0 :(得分:2)

一旦你获得了对子表单的引用,你需要将它转换为适当的类型然后调用该方法。例如:

class MyChildForm : Form {}

Form childForm = GetAChildFormInstance();
MyChildForm castForm = (MyChildForm)childForm;
castForm.MyMemberMethod();

作为旁注,您似乎没有命名约定。在.NET中,所有公共成员(属性,字段和成员)都应该是PascalCased。 Locals(方法变量和参数)应该是camelCase,私有字段可以是_underscorePrefixed。不应在.NET中的单词之间使用下划线。