2012-07-16 40 views
0

我在我的Windows窗體應用程序中有組合框,我希望它具有特定選項的值。如何將值添加到我在C#中的combobox選項?

現在我只能把一個選項,當我選擇了它 - 我可以通過

combobox.text 

我的目標是列出組合框中的文件名,並在值路徑,讓他們吧。

示例:文本是=「option1」,它包含的值是=「value1」,該怎麼辦?

我看到幾個主題有關,但他們是2歲左右,也許事情發生了轉變,導致這些解決方案都不太友好:]

UPDATE

我有一個問題與您的解決方案,馬哈茂德·賈邁勒:)

我做這樣說:

 List<Foo> combo3data = new List<Foo>(); 

     categories = Directory.GetDirectories(@"C:\banners\categories\"); 

     // There are 3 different paths in categories[] array (category1, category2 and 3) 

     Foo categoryInsert = new Foo(); 

     foreach (string s in categories) 
     { 
      categoryInsert.path = s; 
      categoryInsert.name = s; 
      combo3data.Add(categoryInsert); 
     } 

     comboBox3.DataSource = combo3data; 
     comboBox3.ValueMember = "path"; 
     comboBox3.DisplayMember = "name"; 

之後,我的COM boBox3有3個可用選項(正確),但它們都是相同的(與選項#1相同) - 爲什麼?

回答

3

您正在尋找兩個屬性:

你的情況,你必須組合框的ValueMember屬性設置爲value1DisplayMember屬性爲option1

更新:以下是如何從一些實體Foo列表填充組合框的項目
的一個實例:

public class Foo(){ 
    public string Id { get; set; } 
    public string Name { get; set; } 
} 

var ds = new List<Foo>(){ 
    new Foo { Id = "1", Name = "name1" }, 
    new Foo { Id = "2", Name = "name2" }, 
    new Foo { Id = "3", Name = "name3" }, 
    new Foo { Id = "4", Name = "name4" }, 
}; 

comboboxName.DataSource = ds; 
comboboxName.ValueMember = "Id"; 
comboboxName.DisplayMember = "Name"; 

UPDATE2:那是因爲你添加的每個相同的對象時間。在你的代碼的以下塊:

Foo categoryInsert = new Foo(); 

foreach (string s in categories) 
{ 
    categoryInsert.path = s; 
    categoryInsert.name = s; 
    combo3data.Add(categoryInsert); 
} 

每次foreach遍歷categories,所有它做什麼,正在改變同一對象categoryInsert的價值觀pathname沒有創造一個新的。因此,您最終會在每次迭代中添加相同的對象到combo3data。您需要的是每次在foreach本身內部創建一個新的Foo對象,即:將Foo categoryInsert = new Foo();移動到foreach循環內。例如:

foreach (string s in categories) 
{ 
    Foo categoryInsert = new Foo(); 
    categoryInsert.path = s; 
    categoryInsert.name = s; 
    combo3data.Add(categoryInsert); 
} 
+0

ü意味着我應該改變組合框列表框成的物品的實際價值? – pawel 2012-07-16 11:34:40

+0

不,這是屬性:'comboBox.ValueMember =「value1」;'和'comboBox.DisplayMember =「option1」' – eMi 2012-07-16 11:36:04

+0

@pawel,不,你沒有'Combobox'類已經有這些屬性以及'Listbox'類。 – 2012-07-16 11:37:25

1

使用comboBox.Text來設置或獲取與此組合框關聯的文本。 的值使用comboBox.ValueMember用於在列表控件 ,或者您也可以在值存儲在comboBox.Tag

相關問題