【问题标题】:C# Line delimited Textfile to DataGrid CellsC# 行分隔的文本文件到 DataGrid 单元格
【发布时间】:2013-07-07 03:39:55
【问题描述】:

我正在为我的电影制作业务构建一个 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

等等。 . .所以每个actor都有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 数据库读取和写入,因为我会让我的每个演员都使用这个应用程序,但我想让这个本地副本正常工作,这样我就可以把每个演员的信息放在那里。然后我会将文本文件导出到数据库,对数据库进行所需的更改,然后将应用程序发布给我的人才。

【问题讨论】:

    标签: c# arrays datagrid text-files


    【解决方案1】:

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

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

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

    foreach(var line in File.ReadLines("Talent.txt"))
    {
        var columns = line.Split(',');
        talentDataGrid.Rows.Add(columns)
    }
    

    【讨论】:

    • 使用您对使用 Join 的建议,我现在让它在文本文件中创建一个逗号分隔的列表,但由于我没有将源绑定到数据网格,读取将不起作用。 . .但是现在我将它放在一个逗号分隔的列表中,我可以使用我在互联网上找到的众多示例之一轻松读取该文件。我只是找不到很多处理行分隔列表或展示如何将其转换为逗号分隔的列表。 . .谢谢
    • 啊。您可以只使用 columns 这是一个字符串数组并将每个索引分配给相应的列。我会进行编辑。
    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    相关资源
    最近更新 更多