有人可以帮助我吗?我已经完成了每一条线,但是我无法弄清楚我错过了什么。没有错误,但是当我运行它时,根本不会填充列表。只有这一行" Project.ContactDetails"重复文本文件中总行数的次数,我认为这意味着列表中填充了""对于文本文件中的每一行数据,而不是数据本身(而不是Mary,Jane,John,列表得到"","","& #34)。我查看了其他类似的案例,包括MSDN示例,从技术上复制了他们的代码,但列表中仍然没有。
或者,如果有链接,你可以建议我阅读,这样我可以更好地理解列表和类,这将是非常棒的。我读了很多,但它们大多都很简单,列表只包括名字(Mary,Jane,John),不是这样的(John Farmer,25 Pitt Street,99887766; Mary Jane,26 Argyle Road,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; }
}
答案 0 :(得分:2)
问题在于填充列表的循环。
foreach (ContactDetails item in CList)
{
listBox1.Items.Add(item+counter.ToString());
counter++;
}
此处隐式调用的item.ToString()
的结果是类的名称(在本例中为Project.ContactDetails
)。
您可以覆盖实体类中的.ToString()
方法(Project.ContactDetails)以返回正确的文本,或者可以将item.First
添加到列表中,这将添加名字。
foreach (ContactDetails item in CList)
{
listBox1.Items.Add(item.First + counter++);
}