Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将列表中的数据插入列表框?_C#_Winforms_Listbox - Fatal编程技术网

C# 如何将列表中的数据插入列表框?

C# 如何将列表中的数据插入列表框?,c#,winforms,listbox,C#,Winforms,Listbox,我已经创建了一个名为employees的列表,我想将该列表中的所有信息输入表单上的列表框中 我不敢相信我已经忘记了这一点,我环顾四周,找不到任何简明的信息,我有一本学习手册,但他们使用文本框而不是列表框,并且他们只处理数组和简单的数据类型 List<Employee> employees = new List<Employee>(); 我已经创建了一个List 然后我将其添加到表单的列表框中 lstFree.Items.Add(employees); 但它只显示为“收

我已经创建了一个名为
employees
的列表,我想将该
列表中的所有信息输入表单上的列表框中

我不敢相信我已经忘记了这一点,我环顾四周,找不到任何简明的信息,我有一本学习手册,但他们使用
文本框而不是
列表框
,并且他们只处理数组和简单的数据类型

List<Employee> employees = new List<Employee>();
我已经创建了一个
List

然后我将其添加到表单的列表框中

lstFree.Items.Add(employees);
但它只显示为“收藏”


我做错了什么?

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

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());
}
相反,您可以使用循环:

foreach (var emp in employees)
    lstFree.Items.Add(emp);
或者只将其分配给
数据源

listBox1.DataSource = employees;
您还需要告诉它要向用户显示的属性(以及可选的,要用作基础值的属性):


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

相反,您可以使用循环:

foreach (var emp in employees)
    lstFree.Items.Add(emp);
或者只将其分配给
数据源

listBox1.DataSource = employees;
您还需要告诉它要向用户显示的属性(以及可选的,要用作基础值的属性):


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

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

我一直在寻找更高效的代码,我感谢你帮助我发展我自己的技能。我一直在寻找更高效的代码,我感谢你帮助我发展我自己的技能。那么有没有办法让
员工加入。添加(xxxx)
进入循环,因此它会根据
列表中的实例数量自动添加它们
是只需替换
列表框1.Items.Add(emp.ToString())带有
列表框1.Items.Add(新员工(2222,“姓名”,“技能集”).ToString()
。那么有没有一种方法可以将
员工。添加(xxxx)
到一个循环中,这样它会根据
列表中有多少实例自动添加员工
Yes只需替换
listBox1.Items.Add(empl.ToString())带有
列表框1.Items.Add(新员工(2222,“姓名”,“技能集”).ToString()。虽然您的评论很有帮助,而且可能是最合适的,但我无法让数据源在我的GUI表单上工作,它崩溃了或是其他什么,所以很不幸,我不得不将最佳答案交给另一个人,但我还是投票给了您。谢谢。虽然你的评论很有帮助,而且可能是最合适的,但我无法让数据源在我的GUI表单上工作,它崩溃了或是其他什么,所以很不幸,我不得不把最好的答案交给另一个人,但我还是投了你一票。谢谢