1

私には2つの形式があります。1つはMDIの親で、もう1つは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にする必要があります。ローカル(メソッド変数とパラメーター)はcamelCaseである必要があり、プライベートフィールドは_underscorePrefixedにすることができます。.NETでは、単語の間にアンダースコアを使用しないでください。

于 2012-07-14T19:17:42.780 に答える