Может ли кто-нибудь помочь мне. Я прошел через каждую линию, но просто не могу понять, что я пропустил. Нет ошибки, но когда я запускаю ее, как-то список вообще не заполняется. Только эта строка "Project.ContactDetails" повторяется столько раз, сколько общее количество строк в текстовом файле, что, я думаю, означает, что список заполняется "" для каждой строки данных в текстовом файле вместо самих данных (вместо Мэри, Джейн, Джон, список получил "", "", ""). Я рассмотрел другие подобные случаи, в том числе примеры 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
).
Вы можете переопределить метод .ToString()
в классе сущности (Project.ContactDetails), чтобы вернуть правильный текст, или вы можете добавить item.First
в список, который добавит первое имя.
foreach (ContactDetails item in CList)
{
listBox1.Items.Add(item.First + counter++);
}
listBox1.Items.Add(item+counter.ToString());
что должен делать item + counter? просто удалите + счетчик и повторите попытку ..