2011-09-18 60 views
1

我在我的項目中兩種形式,如何從我的主窗體調用設置窗體中的函數?

  1. 主要形式
  2. 設置形式

我需要調用從主窗體的方法中的設置形式的事件。我的主表單具有啓動畫面(在構造函數中),所以我無法創建主窗體的實例來調用該方法。

有沒有什麼辦法可以在不調用主窗體構造函數的情況下調用該函數?或者還有其他方法可以實施嗎?

回答

0

您可以將Main窗體作爲構造函數參數發送到Settings窗體(假定Settings是從Main調用的)。

更好的方法是將Func<...>Action<...>發送到設置窗體,讓它調用它。

... 

public Settings(Action<int> myAction) 
{ 
    _myAction = myAction; 
} 


... 
    _myAction(5); 

... 
+0

我是這個C#世界的新手。你可以再解釋一下嗎?動作/函數表示我的主要形式的方法? myAction是主窗體的實例嗎?請幫助 – Deepa

+0

@Deepa:'myAction'是您希望設置表單調用的方法。它類似於C中的函數指針,如果這是你的背景。 –

0

在主窗體保持參考SettingForm的實例。

SettingsForm mySettingsForm; 

public MainForm(SettingsForm settingsForm) 
{ 
    _mySettingsForm = settingsForm; 
} 

private void CallSettingsFormMethods() 
{ 
    _mySettingsForm.CallAnyPublicMethod(); 
} 

創建MainForm實例時,創建一個SettingsForm實例並將其傳遞給MainForm。除非您調用Show或ShowDialog方法,否則SettingsForm將不可見。

SettingsForm settingsForm = new SettingsForm(); 
MainForm myMainForm = new MainForm(settingsForm); 
myMainForm.Show(); 
相關問題