【问题标题】:Calling a MDI Child's method from the MDI Parent in C#在 C# 中从 MDI Parent 调用 MDI Child 的方法
【发布时间】:2012-07-15 03:17:42
【问题描述】:

我有两种形式。一个是 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 mdi


    【解决方案1】:

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

    class MyChildForm : Form {}
    
    Form childForm = GetAChildFormInstance();
    MyChildForm castForm = (MyChildForm)childForm;
    castForm.MyMemberMethod();
    

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

    【讨论】:

    • 嗨,大卫。谢谢你的回答。但是我怎样才能得到已经创建的子表单的实例呢?
    • 你让我很开心@Dai!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多