2015-12-13 116 views
1

我創建了一個名爲employees的列表,並且我想將該List的所有信息輸入到表單的列表框中。如何從列表中插入數據到列表框?

我無法相信我已經忘記了這個我已經繞了一看,我無法找到任何簡潔的信息,我有一個學習的書,但他們使用一個TextBox代替ListBox的,他們只用數組和簡單數據類型的工作。

List<Employee> employees = new List<Employee>(); 

這是列表,它包含employees

Employee employee1 = new Employee(1111, "Name", "Skill Set"); 

我創建的List

一個實例,然後我把它添加到列表框在表單上

lstFree.Items.Add(employees); 

但它只出現在'collection'

我在做什麼錯?

回答

2
List<Employee> employees = new List<Employee>(); 
Employee employee1 = new Employee(1111, "Name", "Skill Set"); 
Employee employee2 = new Employee(2222, "Name", "Skill Set"); 
employees.Add(employee1); 
employees.Add(employee2); 

foreach(var empl in employees) 
{ 
    listBox1.Items.Add(empl.ToString()); 
} 

在Employee類:

public override string ToString() 
{ 
    return ""; // return what you need 
} 
+0

那麼,有沒有把'employees.Add(XXXX)'成一個圈,因此自動加入的方式取決於'list'裏面有多少個實例 –

+0

是的只是用'listBox1.Items.Add(new Employee(2222,「Name」,「)替換listBox1.Items.Add(empl.ToString());技能集「)。ToString());'。 –

3

Add方法需要你的類的一個實例。當您將一個集合傳遞給它時,它會調用ToString(),最終您會看到該集合的完整類名稱。不是你想要的。

相反,你可以使用一個循環:

foreach (var emp in employees) 
    lstFree.Items.Add(emp); 

或者只是把它分配給DataSource

listBox1.DataSource = employees; 

你還需要告訴它顯示給用戶哪個屬性(和可選地,將哪個屬性用作基礎值):

​​3210
+0

雖然你的評論是有幫助的,可能是最適合的,但是我無法設法讓我的GUI形式的DataSource工作,它崩潰了,或者什麼,所以不幸的是我不得不把最好的答案交給另一個人,儘管我贊成你。謝謝。 –

+0

不客氣,丹尼。你的問題最初是用WPF標記的,所以我的修復程序是針對WPF的。沒有意識到你在問WinForms。希望如果別人有與你一樣的問題,但他們在WPF中,這將有助於他們。 –

+0

@Danny我爲WinForms更新了我的答案。把WPF的東西拿出來。 –

2

考慮usi ng AddRange。

object[] arr = Enumerable.Range(1, 10000).Select(i=>(object)i).ToArray(); 

比較這

// 1,29s 
foreach (int i in arr) 
{ 
    listBox1.Items.Add(i); 
} 

時間可以到本

// 0,12s 
listBox1.Items.AddRange(arr); 
+0

我一直在尋找更高效的代碼,我感謝你幫助我發展自己的技能。 –