2013-02-22 58 views
0

您是一个相当新手谈到C#和我试图读出一个文本文件,然后将它分为类与部分,但在哪里申报他们的麻烦然后如何循环记录。这里是我的代码试图读取文本文件到类然后循环通过

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Collections; 
using System.Windows.Forms; 

namespace Assignment_3 
{ 
    public partial class Form1 : Form 
    { 
     string s; 
     string ss; 
     int i = 1; 
     string infilename; 
     int num; 
     SortedList sList = new SortedList(); 
     int x = 0; 

     public Form1() 
     { 
      InitializeComponent(); 
      student myself = new student(); 
      infilename = "text.txt"; 
      StreamReader sr1 = new StreamReader(infilename); 
      sList.Clear(); 
      while ((s = sr1.ReadLine()) != null) 
      { 
       string[] strs = s.Split(','); 

       myself.firstname = strs[0]; 
       myself.middlename = strs[1]; 
       myself.surname = strs[2]; 
       myself.dob = DateTime.Parse(strs[3]); 
       myself.dob.ToString(strs[3]); 
       myself.sex = strs[4]; 
       ss = myself.dob.ToString("u"); 
       sList.Add(myself.firstname, myself); 

      } 
      sr1.Close(); 
      num = sList.Count; 
      student[] pArray = new student[num]; 
      string[] keys = new string[num]; 



      foreach (DictionaryEntry d in sList) 
      { 
       keys[x] = (string)d.Key; 
       pArray[x] = (student)d.Value; 
       x++; 
      } 
      if (i == 0) 
      {lblmessage.Text = "Already at the first record."; i = 1; } 
      if (i == num) 
      {lblmessage.Text = "Already at the last record.";i = num-1; } 

      lbllastname.Text = pArray[i].surname; 
      lblfirstname.Text = pArray[i].firstname; 
      lblsecondname.Text = pArray[i].middlename; 
      lbldob.Text = pArray[i].dob.ToString(); 
      lblsex.Text = pArray[i].sex; 

     } 

     private void btnlast_Click(object sender, EventArgs e) 
     { 
      i = num; 

     } 
     private void btnfirst_Click(object sender, EventArgs e) 
     { 
      i = 0; 
     } 

     private void btnnext_Click(object sender, EventArgs e) 
     { 
      i++; 

     } 

     private void btnprev_Click(object sender, EventArgs e) 
     { 
      i--; 
     } 


    } 
} 

和我的类文件

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Assignment_3 
{ 
    class student 
    { 
     public string firstname; 
     public string middlename; 
     public string surname; 
     public DateTime dob; 
     public string sex; 
    } 
} 

人有任何想法我在哪里去错了?我没有错误,但发现文本字段不更新与新的记录,然后当通过数组类持有正确数量的记录和字段时,我觉得它将是非常明显的东西,让我不能把它放在手指上。

任何帮助将不胜感激。

+0

您还没有告诉我们您收到哪些错误以及在哪里? – 2013-02-22 18:50:05

+0

为您在while循环中阅读的每一行创建一个新学生:myself = new student(); – rene 2013-02-22 18:50:09

回答

0

您应该在for循环内创建student的新实例。因为目前您只有一个学生课程实例,SortedList中的所有项目都指向同一个对象。