无法将数据从文本文件传输到列表集合(和类?)

本文关键字:集合 列表 和类 传输 数据 文件 文本 | 更新日期: 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++);
}