1

我有两种形式。一个是 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 父窗体中可用。然后他们单击按钮,调用方法“open_Form1()”并打开子表单。

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

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

我如何从 MDI 父级调用此方法?

4

1 回答 1

2

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

class MyChildForm : Form {}

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

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

于 2012-07-14T19:17:42.780 回答