2015-02-09 41 views
-4

觸發事件後,我想添加一些項目到我的WinForm中的組合框。以簡潔的方式添加項目到組合框

以下是我的示例代碼,它不完整,也違反了DRY(不要重複自己)的原則。我是一個尋求整潔代碼的新手。請幫助我。

Combobox1.Items.Add("aaa") 
Combobox2.Items.Add("aaa") 
.... 
Combobox50.Items.Add("aaa") 

正如你看到的,我可以,如果有需要添加到ComboBox只有5到10個項目做到這一點。如果有50個呢?我想選擇某個組合框來添加項目。

我發現一個更好的方法來做到這一點,不要重複上面的例程太多的時間。請幫助我一個整潔的代碼。謝謝!!!

+1

只有當你知道如何谷歌。 – 2015-02-09 07:37:54

+1

asp.net和winforms/vb.net和c#的答案可能會有所不同,你在用什麼? – Sayse 2015-02-09 07:38:36

+0

填充集合並將集合綁定到Combobox。單獨的綁定和數據準備,以便如果明天的數據源發生變化,它不會有太大的影響,可能需要很小的調整。此外,如果您知道DRY原則,並且您認爲如何不重複,那麼解決方案將很容易爲您解決。 – Amit 2015-02-09 07:39:10

回答

0

如果你在表單或網頁上有50個組合框,那麼首先你需要從用戶的角度重新設計你的用戶界面開始 - 它可能涉及到一個人太多的信息,在任何一個時間接受。

如果它是一個控件的選擇,那麼你最好將所有的組合框添加到面板,然後遍歷它。

foreach(var cb in this.panelName.Controls.OfType<ComboBox>()) 
    cb.Items.Add("aaa"); 

如果所有的組合框,您可以使用this.Controls但是這不會檢查子控件(即內板)。要做到這一點,你可以使用以下從an answer given by Jon Skeet

foreach(var cb in this.GetAll<ComboBox>()) 
    cb.Items.Add("aaa"); 
+1

謝謝,關鍵詞「Generic」不在我的搜索關鍵字中。感謝您的有用信息。我會看看相關的主題。 – ckpeanut 2015-02-09 07:56:39

+0

@ckpeanut - 不用擔心,希望它有幫助。作爲一個預警,如果你在你的winforms中使用任何選項卡控件,那麼這將不會工作,直到標籤頁被訪問後(它在winforms中有一點「bug」)(我也認爲選項卡現在主要是過時的,應該如果可能,但嘿嘿) – Sayse 2015-02-09 07:58:20

+0

我想到了任何解決方案,像參數化控制名稱這樣(int i = 1; i <51; i ++){「combox」+ i}使用這種方式調用add方法在每個組合框中。但似乎我有更多的功課要做。 – ckpeanut 2015-02-09 08:05:10

0

更好使用DataGridView

DataGridView實際上有一個DataGridViewComboBoxColumn

參考 Ref1 Ref2

0

假設你的組合框處於container1(它可以是例如一個組框),你可以這樣做:

foreach(ComboBox cbx in container1) 
{ 
    cbx.Items.Add("aaa"); 
} 
+0

這很酷,我從來沒有想過這個。好點! – ckpeanut 2015-02-09 07:37:24

+0

@ckpeanut:不要忘記upVote /接受答案,如果它幫助你做你在問題中提問:) – chouaib 2015-02-09 07:39:48

0

這就是你可以嘗試:

foreach(ComboBox cb in controlpanel1) 
{ 
    foreach(items a in ListItems) 
    { 
    cb.Items.Add(a); 
    } 
} 

就是這樣。希望這能幫助你

+0

嗯....我最好把這些組合框放到某種容器中 – ckpeanut 2015-02-09 07:39:45

+0

好吧,請在嘀嘀嘀嗒之後做:l :) – 2015-02-09 07:42:30