C# 将文本文件中的数据加载到Windows窗体上的多个对象中

C# 将文本文件中的数据加载到Windows窗体上的多个对象中,c#,C#,我需要一些帮助将文本文件中的文本加载到多个文本框中,并在我的一个表单上添加标签。我的表单有5个文本框和标签。它们被标记为“txtPlayer1”、“LBLPlayer1点”等 我通过另一个表单保存了一个文本文件中的5行代码,文本文件中的数据如下所示: string ctlName; Control[] matches; Control player, score; string[] lines = File.ReadAllLines

我需要一些帮助将文本文件中的文本加载到多个文本框中,并在我的一个表单上添加标签。我的表单有5个文本框和标签。它们被标记为“txtPlayer1”、“LBLPlayer1点”等

我通过另一个表单保存了一个文本文件中的5行代码,文本文件中的数据如下所示:

        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,以了解该网站的工作原理,并帮助您改进当前和未来的问题,从而帮助您获得更好的答案。