2012-07-14 52 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