如何将List中的数据插入ListBox?

时间:2015-12-13 15:57:02

标签: c# winforms listbox

我创建了一个名为employees的List,我希望将List中的所有信息输入到表单上的列表框中。

我无法相信我已经忘记了这一点我已经浏览过,我找不到任何简明的信息,我有一本学习书,但他们使用的是TextBox而不是ListBox使用数组和简单的数据类型。

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

这是列表,它包含employees

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

我创建了List

的实例

然后我将它添加到表单

上的列表框中
lstFree.Items.Add(employees);

然而,它只显示为&#39;集合&#39;

我做错了什么?

3 个答案:

答案 0 :(得分:3)

Add方法需要您的类的单个实例。当您将集合传递给它时,它会调用ToString()并最终看到集合的完整类名。不是你想要的。

相反,您可以使用循环:

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

或者只是将其分配给DataSource

listBox1.DataSource = employees;

您还要告诉它要向用户显示哪个属性(以及可选地,哪个属性用作基础值):

listBox1.DisplayMember = "Name";
listBox1.ValueMember = "EmpId";   // guessing what your class properties might be called

答案 1 :(得分: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());
}

在员工类中:

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

答案 2 :(得分:2)

考虑使用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);