2011-04-15 29 views
4

我想製作一個動態的GUI,這意味着GUI將根據用戶在組合框上的選擇而改變。如何創建動態面板以顯示並隱藏在C#中的組合框中使用差異選擇?

例如,如果組合框由{英文,西班牙文,法文}組成,組合框底部的面板將根據選擇更改其描述語言。

要做到這一點,我相信我必須做一些像清晰面板然後重繪面板,但我不知道如何。

有人可以告訴我如何使Visual Studio 2005 C#的細節發生這種情況嗎?

預先感謝您。

+0

你的面板裏面有什麼? – 2011-04-15 15:36:53

+0

我做了一個窗口窗體,其中包含一個有組合框的面板。在內部面板中,它有一個組合框,您可以從3種語言中進行選擇,在其下面還有另一個面板可以選擇,我想根據用戶選擇的語言更改面板。 – js0823 2011-04-15 20:59:08

回答

4

我在這裏有這個確切的實現:http://nbug.codeplex.com/SourceControl/changeset/view/6081#107027它實現了一個IPanelLoader(ISubmitPanel爲我的情況)接口,並加載與組合框中相同名稱的任何面板。基本上下載源代碼並編譯它並查看「配置器」項目。有很多東西需要我來解釋,但已經有一個完整的例子。

在我的情況下,任何形式來實現ISubmitPanel接口(MailForm,FtpForm等在我的情況),可以加載這樣的:

private void SubmitComboBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    switch (this.submitComboBox.SelectedItem.ToString()) 
    { 
     case "E-Mail": 
      this.Controls.Add(new MailForm()); 
      break; 
     case "FTP": 
      this.Controls.Add(new FtpForm()); 
      break; 
     case "HTTP": 
      this.Controls.Add(new HttpForm()); 
      break; 
    } 
} 

Ofcourse此代碼應在要載入另一種形式運行另一種形式進入。

Dropdown to load panels

E-Mail panel loaded

編輯:源代碼是從NBug項目。

相關問題