2017-01-01 76 views
-4

我有這樣的代碼:創建參數的情況下

LoginForm loginform = new LoginForm(); 
loginform.TopLevel = false; 
panelcenter.Controls.Add(loginform); 
loginform.Show(); 

現在我願意做這樣的一個方法:

private void AddFormToPanelCenter(string Form_0, string name) 
{ 
    Form_0 name = new Form_0(); 
    name.TopLevel = false; 
    panelcenter.Controls.Add(name); 
    name.Show(); 
} 

的問題是我的參數都是字符串,顯然是不正確的,但我不知道我應該使用什麼參數。

+0

我想我罩着你在我的回答如下所需要的。不過,我建議你編輯問題,添加更多信息來澄清問題,以避免收到投票。你可以閱讀[如何問](http://stackoverflow.com/help/how-to-ask)。或者看看[這個清單](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)這是一個非常好的參考,使您的問題更好,更容易理解。 –

+0

哦,謝謝!問題是我對這個說法也不是很確定! :| –

回答

1

如果你希望能夠運用你的方法對任何形式的情況下,可以在形式實例本身傳遞給你的方法(你也可以通過父面板),如下所示:

void AddFormToPanel(Form frm, Panel pnl) 
{ 
    frm.TopLevel = false; 
    pnl.Controls.Add(frm); 
    frm.Show(); 
} 

用法:

LoginForm frm = new LoginForm(); 
AddFormToPanel(frm, panelcenter); 

如果您的形式將永遠是LoginForm但你希望能夠使用的實例,可以用以前的方法堅持下去,或將其轉換爲返回表單實例函數:

public Form AddFormToPanel(Panel pnl) 
{ 
    LoginForm frm = new LoginForm(); 
    frm.TopLevel = false; 
    pnl.Controls.Add(frm); 
    frm.Show(); 
    return frm; 
} 

用法:

LoginForm frm = (LoginForm)AddFormToPanel(panelcenter); 

此外,應用該方法的任何形式更好的方法,就是使用泛型類,因此您可以通過類型,而不是它的一個實例。您可以使用類似以下內容:

public class NewForm<T> where T : Form, new() 
{ 
    public static void AddFormToPanel(Panel pnl) 
    { 
     T frm = new T(); 
     frm.TopLevel = false; 
     pnl.Controls.Add(frm); 
     frm.Show(); 
    } 
} 

用法:

NewForm<LoginForm>.AddFormToPanel(panelcenter); 

希望幫助:)

+0

Omg!你是個天才!非常感謝,非常感謝!我正在尋找這個! –

+0

不客氣:)。很高興我能夠提供幫助。你仍然應該編輯這個問題。請檢查我對上述問題的評論。 –

1

您不需要傳遞任何參數,因爲它不需要它。

private void AddFormToPanelCenter() 
{ 
    Form name = new Form(); 
    name.TopLevel = false; 
    panelcenter.Controls.Add(name); 
    name.Show(); 
} 
+0

是啊!但是我想打電話給其他表格,例如: –

相關問題