无法将数据从文本文件传输到列表集合(和类?)
本文关键字:集合 列表 和类 传输 数据 文件 文本 | 更新日期: 2023-09-27 18:18:53
谁能帮帮我?我把每一行都看了一遍,就是不知道我错过了什么。没有错误,但当我运行它时,不知何故,列表根本没有填充。只有"项目"这一行。ContactDetails"重复的次数与文本文件中的行总数一样多,我认为这意味着文本文件中的每一行数据都用"填充列表,而不是数据本身(而不是Mary, Jane, John,列表得到",",")。我看了其他类似的案例,包括MSDN的例子,技术上复制了他们的代码,但仍然没有在列表中。
或者如果有链接你可以建议我读,这样我可以更好地理解列表和类,那将是了不起的。我读过很多,但大多都相当简单,比如,名单上只有名字(玛丽、简、约翰),而不是这样的(约翰·法默,皮特街25号,99887766;玛丽·简,亚皆老道26号,邮编97776652)
*拉我的头发-出去买假发-会回来的。
public partial class frmContact : Form
{
//declare file, class and list
string fileName = Directory.GetCurrentDirectory() + "''Contacts.txt";
List<ContactDetails> CList = new List<ContactDetails>()
public frmContact()
{
InitializeComponent();
}
//-------------------//
// LOAD CONTACT FORM //
//-------------------//
private void frmContact_Load(object sender, EventArgs e)
{
//create Contacts.txt if it does not exist
if (!File.Exists(fileName))
{
File.Create(fileName).Close();
MessageBox.Show("New " + fileName +" Has Been Created");
}
//if file already exists
else
{
StreamReader readOb = new StreamReader(fileName);
using (readOb)
{
while (!readOb.EndOfStream)
{
string rdLine = readOb.ReadLine(); //read data in file by line
string[] tmpArr = rdLine.Split(',');
lbContact.Items.Add(tmpArr[0]+","+tmpArr[1]);
CList.Add(new ContactDetails() { Last = tmpArr[0], First = tmpArr[1] });
}
}
//check if list populated
int counter = 0;
foreach (ContactDetails item in CList)
{
listBox1.Items.Add(item+counter.ToString());
counter++;
}
}
tbLast.Select(); // set cursor to Surname textbox
}
}
class ContactDetails
{
public string Last {get; set;}
public string First { get; set; }
public string Addr { get; set; }
public string Sub { get; set; }
public string Post { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Mob { get; set; }
}
问题出在填充列表的循环中。
foreach (ContactDetails item in CList)
{
listBox1.Items.Add(item+counter.ToString());
counter++;
}
这里隐式调用的item.ToString()
的结果是类的名称(在本例中为Project.ContactDetails
)。
您可以在实体类(Project.ContactDetails)中重写.ToString()
方法以返回正确的文本,或者您可以将item.First
添加到列表中,这将添加第一个名字。
foreach (ContactDetails item in CList)
{
listBox1.Items.Add(item.First + counter++);
}