我创建了一个名为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;
我做错了什么?
答案 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);