C# 将文本文件中的数据加载到Windows窗体上的多个对象中
我需要一些帮助将文本文件中的文本加载到多个文本框中,并在我的一个表单上添加标签。我的表单有5个文本框和标签。它们被标记为“txtPlayer1”、“LBLPlayer1点”等 我通过另一个表单保存了一个文本文件中的5行代码,文本文件中的数据如下所示:C# 将文本文件中的数据加载到Windows窗体上的多个对象中,c#,C#,我需要一些帮助将文本文件中的文本加载到多个文本框中,并在我的一个表单上添加标签。我的表单有5个文本框和标签。它们被标记为“txtPlayer1”、“LBLPlayer1点”等 我通过另一个表单保存了一个文本文件中的5行代码,文本文件中的数据如下所示: string ctlName; Control[] matches; Control player, score; string[] lines = File.ReadAllLines
string ctlName;
Control[] matches;
Control player, score;
string[] lines = File.ReadAllLines(filePath);
for(int i = 0; i < 5; i++)
{
player = null;
ctlName = "txtPlayer" + (i + 1).ToString();
matches = this.Controls.Find(ctlName, true);
if (matches.Length > 0)
{
player = matches[0];
player.Text = "";
}
score = null;
ctlName = "lblPlayer" + (i + 1).ToString() + "Points";
matches = this.Controls.Find(ctlName, true);
if (matches.Length > 0)
{
score = matches[0];
score.Text = "";
}
if (i < lines.GetUpperBound(0))
{
string[] parts = lines[i].Split(",".ToCharArray());
if (parts.Length == 2)
{
string[] nameParts = parts[0].Split(":".ToCharArray());
if (nameParts.Length == 2)
{
if (player != null)
{
player.Text = nameParts[1].Trim();
}
}
string[] scoreParts = parts[1].Split(":".ToCharArray());
if (scoreParts.Length == 2)
{
if (score != null)
{
score.Text = scoreParts[1].Trim();
}
}
}
}
}
第一名:AK-Aaron,得44分
第二名:GJ-George,得24分
第三名:SB-Sarah,得40分
第四名:JB-Jason,得29分
第五名:JS-Jacob,分数:22
总分:159
我是否可以将球员姓名放在第一行AK-Aaron的“txtPlayer1”文本框中,然后将她的44分放在“LBLPlayer1分”中
理想情况下,我希望每一行都这样做,这样我就可以用“txtPlayer2”和
“GJ-George”和“LBLPlayer2点”加上“24”一直到第五行结束
编辑:
这是我用来打开表单上的文本文件的代码。按下按钮并执行此代码:
OpenFileDialog FileDialog = new OpenFileDialog();
FileDialog.Title = "Select Text File!";
FileDialog.InitialDirectory = @"c:\\";
FileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
if (FileDialog.ShowDialog() == DialogResult.OK)
{ string fileName;
fileName = FileDialog.FileName;
Properties.Settings.Default.fullPath = Path.Combine(Directory.GetCurrentDirectory(), fileName);
现在我有了这段代码,它适用于第一行,但不适用于其他行:
字符串filePath=Properties.Settings.Default.fullPath
string[] lines = null;
lines = File.ReadAllLines(filePath);
//READING TOP LINE
string textLine = lines[0];
string[] stringSplit = textLine.Split(' ');
string firstName = stringSplit[1];
string firstPoints = stringSplit[3];
txtFirstName.Text = FirstName;
lblFirstPoints.Text = firstPoints;
如果我尝试将此应用于其他行,它只会导致表单崩溃。尝试以下操作:
string ctlName;
Control[] matches;
Control player, score;
string[] lines = File.ReadAllLines(filePath);
for(int i = 0; i < 5; i++)
{
player = null;
ctlName = "txtPlayer" + (i + 1).ToString();
matches = this.Controls.Find(ctlName, true);
if (matches.Length > 0)
{
player = matches[0];
player.Text = "";
}
score = null;
ctlName = "lblPlayer" + (i + 1).ToString() + "Points";
matches = this.Controls.Find(ctlName, true);
if (matches.Length > 0)
{
score = matches[0];
score.Text = "";
}
if (i < lines.GetUpperBound(0))
{
string[] parts = lines[i].Split(",".ToCharArray());
if (parts.Length == 2)
{
string[] nameParts = parts[0].Split(":".ToCharArray());
if (nameParts.Length == 2)
{
if (player != null)
{
player.Text = nameParts[1].Trim();
}
}
string[] scoreParts = parts[1].Split(":".ToCharArray());
if (scoreParts.Length == 2)
{
if (score != null)
{
score.Text = scoreParts[1].Trim();
}
}
}
}
}
你觉得分享一些代码怎么样?我可以把玩家的名字写在第一行吗。。。当然可以。向我们展示您目前如何检索文本文件内容。当加载100个玩家名称行文本时,请阅读关于图形用户界面GUI的内容?只读五行就可以得到最好的分数?按名称或点数排序?欢迎使用堆栈溢出!请浏览、和部分,如上面提到的@Jim,以了解该网站的工作原理,并帮助您改进当前和未来的问题,从而帮助您获得更好的答案。