我正在为我的电影制作业务构建一个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个字段,一个接一个地写一个
然后我想关闭应用程序,当我重新打开它时,让文本文件自动使用每个actor的信息填充datagrid。 datagrid有6列,每行是1个actor,每列都包含相关信息。
以上所有方法都正常,但我无法弄清楚文本文件的读取。我使用以下方法
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方法中出错的地方,以便每个actor都出现在datagrid中。
我也欢迎重构代码的提示。
我最终会将其更改为从我的在线MySQL数据库中读取和写入,因为我将让每个演员都使用此应用程序,但我想让这个本地副本正常工作,这样我就可以将每个人才的信息放在那里。然后我将文本文件导出到数据库,进行数据库所需的更改,然后将应用程序发布给我的人才。
答案 0 :(得分:0)
我会将这些行加入逗号分隔值,而不是每个actor有6行。
var line = string.Join(",", actorList);
接下来,您可以简单地阅读该文件,因为每一行都是一个演员。
foreach(var line in File.ReadLines("Talent.txt"))
{
var columns = line.Split(',');
talentDataGrid.Rows.Add(columns)
}