2012-11-27 65 views
1

我有我的表格上8個組合框,將所有持有相同的值的多個組合框 - Yes和No.填充相同的值

難道還有比不必做combox1.items.add一個更快的方式(「是「)等?

我有以下,但我似乎無法找到任何與添加項目。

Dim cmb As Control 
    For Each cmb In Panel1.Controls 
     If TypeOf cmb Is ComboBox Then 
'cmb. isnt beinging anything up for adding items? 
     End If 
Next 

乾杯

+0

在這種情況下'cmb'仍然是'Control';你需要'DirectCast(cmb,ComboBox).Items.Add'。但是,使用@ TimSchmelter的解決方案,並確保在此情況下不提前聲明'cmb' :) – Ryan

回答

4

您可以使用Enumerable.OfType

For Each cmb In Panel1.Controls.OfType(Of ComboBox)() 
    cmb.Items.Add("Yes") 
Next 
+0

非常感謝,完美的作品。 – user1295053

1

我會創建一個包含{Yes,No}值的DataSource,例如作爲List,然後就這樣做:

For Each cmb In Panel1.Controls.OfType(Of ComboBox)() 
    cmb.DataSource = myYesNoDataSource 
Next 

如果您需要接受YN代替YesNo,則可以將其轉換爲Dictionary並相應地設置ValueMemberDisplayMember。另外,可用值的列表只能初始化一次。所以你的解決方案變得靈活。

+0

酷提示! - 很高興知道! –

0

如果您沒有使用面板,此代碼將很有用。 如果你有5個組合框給像ComboBox1,ComboBox2,comboBox3等

For count = 1 To 5 
Dim combobox = DirectCast(Me.Controls("ComboBox" & n & ""), ComboBox) 
combobox.Items.Add("Ok") 
Next 

希望這代碼也可以幫助你的組合框的數量1至5和名稱。