2012-07-14 54 views
0

我有两种形式。一个是MDI父母,另一个是MDI孩子。当点击父母上的按钮时,孩子的形式打开。我写了一个代码来防止表单重复。那些方法是;调用一个MDI子程序从MDI父C#

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

一旦你已经得到了你需要将其转换为适当的类型,然后调用方法的子窗体的引用。例如:

class MyChildForm : Form {} 

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

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

+0

嗨大卫。谢谢你的答案。但我怎样才能得到已经创建的子窗体的实例? – 2012-07-14 19:31:35

+0

再次感谢大卫。我设法找到答案! – 2012-07-14 19:53:30