我是C#编程的新手,我有一个Windows Form项目,我试图用ArrayList和ListView做一个小CRUD,但是..问题是将数据从ArrayList传递给ListView我会显示问题!
在这个类中我初始化Form并将一些属性设置为ListView,并执行read()方法taht将从ArrayList读取数据并传递给ListView!
namespace EmployeeCompany
{
public partial class Main : Form
{
ArrayList list = new ArrayList();
public Main()
{
InitializeComponent();
//ListView Properties
lstvPerson.View = View.Details;
lstvPerson.FullRowSelect = true;
//Construct Columns
lstvPerson.Columns.Add("Name", 150);
lstvPerson.Columns.Add("Position", 150);
lstvPerson.Columns.Add("Team", 150);
read();
}
//-------Problem
private void read()
{
ListViewItem item = new ListViewItem();
item.Text = list.ToString();
lstvPerson.Items.Add(item);
}
private void btnRegister_Click(object sender, EventArgs e)
{
Person person = new Person();
person.name = this.txtName.Text;
person.position = this.txtPosition.Text;
person.team = this.txtTeam.Text;
list.Add(person);
}
}
}
在输出中:
Name | Position | Team |
-------------------------------
System.Collection.ArrayList |
|
|
|
|
有人可以向我解释为什么我会收到这个错误,并举一些关于良好实践的例子吗?
答案 0 :(得分:1)
首先,我建议不要使用ArrayList。对于此问题,您应该使用List。它是强类型的,可以让您更轻松地访问每个人的属性。只需改变
ArrayList list = new ArrayList();
到
var list = new List<Person>();
对于ListView ......如果我没记错的话,Text
的{{1}}是最左边的列。要访问其他列,您需要使用ListViewItem
。
此外,您无法将整个列表分配给一个项目。您应该将列表中的一个项目分配给ListView中的一个项目。
所以而不是
SubItems
尝试
private void read()
{
ListViewItem item = new ListViewItem();
item.Text = list.ToString();
lstvPerson.Items.Add(item);
}