0

だから私はこのクラスを持っています

namespace WindowsFormsApplication2
{ 
    public class Records
    {
        public string name, surname;

        public int num;
    }
}

このクラスの配列を作成したいのですが、すべてを試してみましたが、まだ機能しません。バグだと思い始めました。Visual Studio 2012 を使用しています。ここに私のコードがあります。

(フォームにレコードのデータグリッドがあり、テキストボックスから読み取っています。情報はタブ文字で区切られています)

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Records[] userRecs = new Records[20];

        public int count = 0;


        private void Form1_Load(object sender, EventArgs e)
        {
            getText();
        }

        public void getText() 
        {
            FileStream fs = new FileStream("D:\\filestr.txt",FileMode.Open);

            StreamReader sr = new StreamReader(fs);

            for (string readed = sr.ReadLine(); readed != null; readed = sr.ReadLine())
            {
                string[] tempStr = readed.Split('\t');

                userRecs[count].num = Convert.ToInt32(tempStr[0]);

                userRecs[count].name = tempStr[1];

                userRecs[count].surname = tempStr[2];

                count++;
            }

            for (int i = 0; i < count; i++)
            {
                dataGridView1.Rows.Add(userRecs[count].num, userRecs[count].name, userRecs[count].surname);
            }

            sr.Close();
            fs.Close();
        }
    }
}
4

2 に答える 2

8

これにより、配列にメモリが割り当てられますが、 Record インスタンスは作成されません。

Records[] userRecs = new Records[20];

ファイル行を反復処理するときは、クラスをインスタンス化する必要があります。

userRecs[count] = new Records();
userRecs[count].num = ...
...
于 2012-11-16T21:27:26.863 に答える
2
 dataGridView1.Rows.Add(userRecs[count].num, userRecs[count].name, userRecs[count].surname);

おそらくそうあるべきです

dataGridView1.Rows.Add(userRecs[i].num, userRecs[i].name, userRecs[i].surname);
于 2012-11-16T21:25:35.683 に答える