0

我正在为我的电影制作业务构建一个 WinForm 应用程序,我将使用它来输入我所有可用的人才信息。输入每个人才的信息并单击“添加记录”按钮后,文本框将全部添加到数据网格和文本文件中。我正在添加这样的信息:

    public void AddToActorFile()
    {
        List<string> actorList = new List<string>();
        actorList.Add(midianTalent.Name);
        actorList.Add(midianActor.CharacterName);
        actorList.Add(midianActor.CastHeight);
        actorList.Add(midianActor.CastWeight);
        actorList.Add(midianActor.CastAge);
        actorList.Add(midianActor.CastSSN);
        actorList.Add(imageFileName);
        // B.
        string[] actorArray = actorList.ToArray();
        File.AppendAllLines(@"Cast.txt", actorArray);

        MessageBox.Show(cbPosition.SelectedItem + " Added to Cast File");
        AddActorToDataGrid();
    }

    public void AddActorToDataGrid()
    {
        actorDataGrid.Rows.Add(midianTalent.Name, midianActor.CastAge, midianActor.CastHeight, midianActor.CastWeight, midianActor.CastSSN, imageFileName);

    }

文本文件以行分隔,因此它看起来像这样

Actor1Info1
Actor1Info2
Actor1Info3
Actor1Info4
Actor1Info5
Actor1Info6
Actor2Info1
Actor2Info2
Actor2Info3

等等 。. . 所以每个演员都有 6 个字段,一个接一个地被写入

然后我想关闭应用程序,当我重新打开它时,让文本文件自动使用每个参与者的信息填充数据网格。数据网格有 6 列,每行是 1 个参与者,每列包含相关信息。

以上所有工作正常,除了我无法弄清楚文本文件的读取。我正在使用以下方法

     public void ReadTalentFileData()
    {
        using (StreamReader fileReader = new StreamReader("Talent.txt"))
        {
            int column = 0;
            string fileLine;
            while ((fileLine = fileReader.ReadLine()) != null)
            {
                string[] cells = fileLine.Split('\n');
                talentDataGrid.Rows.Add();
                for (int i = 0; i < cells.Length; i++)
                {
                    talentDataGrid[column, i].Value = cells[i];
                }
                column++;

            }
        }
    }

第一个演员列表很好,但无论我放了多少演员,这是唯一显示的记录,我的数据网格中还有额外的空白行。任何人都可以帮助我找出我的 readfile 方法中哪里出错了,以便每个参与者都显示在数据网格中。

我也欢迎有关重构代码的提示。

我最终会将其更改为从我的在线 MySQL 数据库读取和写入,因为我会让我的每个演员都使用这个应用程序,但我想让这个本地副本正常工作,这样我就可以把每个演员的信息放在那里。然后我会将文本文件导出到数据库,对数据库进行所需的更改,然后将应用程序发布给我的人才。

4

1 回答 1

0

我会将这些行加入逗号分隔值,而不是每个演员 6 行。

var line = string.Join(",",  actorList);

接下来,您可以简单地读取文件,因为每一行都是一个演员。

foreach(var line in File.ReadLines("Talent.txt"))
{
    var columns = line.Split(',');
    talentDataGrid.Rows.Add(columns)
}
于 2013-07-07T04:00:11.073 回答