C#txt文档 数据读取和修改

匿名 9999
匿名 9999
匿名 9999
匿名 9999
名字和数字之间用空格隔开,现在要将这8个数据分别赋值到8个label控件中,进行比较后,返回txt文档,并替换原数据,做一个排行榜的功能.
求读取txt文档和赋值label控件的C# 代码。
一共有4个难度,每个难度只保留一个最大值,功能类似于扫雷的排行榜

楼主请看,

    准备文件内容


    Code,我的思路很简单,就是刚开始先加载数据到label,然后在排序,在输出结果。。


    //定义一个全局的变量。。。存储读取的内容
            Dictionary<string, int> dics = new Dictionary<string, int>();
            private void button1_Click(object sender, EventArgs e)
            {
                using (FileStream fs = new FileStream("TextFile1.txt", FileMode.Open))
                {
                    using (StreamReader sr = new StreamReader(fs))
                    {
                        int lblCount = 1;
                        while (!sr.EndOfStream)
                        {
                            string[] line = sr.ReadLine().Split(' ');
                            dics.Add(line[0], Convert.ToInt32(line[1]));
                            SetLabelByID("label" + lblCount, line[0]);
                            lblCount++;
                            SetLabelByID("label" + lblCount, line[1]);
                            lblCount++;
                        }
                    }
                    fs.Close();
                }
            }
            
            private void button2_Click(object sender, EventArgs e)
            {
                //进行排序。。
                var sortDics = from n in dics
                               orderby n.Value descending
                               select n;

                int lblCount2 = 1;
                foreach (var item in sortDics)
                {
                    SetLabelByID("label" + lblCount2, item.Key);
                    lblCount2++;
                    SetLabelByID("label" + lblCount2, item.Value.ToString());
                    lblCount2++;
                }
            }
            //通过找到ID,然后对label进行赋值。。
            public void SetLabelByID(string strID, string val)
            {
                Label lbl = null;
                foreach (Control c in this.Controls)
                {
                    if (c.Name == strID)
                    {
                        lbl = (Label)c;
                        lbl.Text = val;
                    }
                }
            }

    结果

    界面是这样子的:


    点击“加载数据”


    点击“开始排序”


    你看,我没有骗你,可以看到现在按照数据从大到下排序了。。

    不知道是不是楼下需要的结果。。有问题 可以在进行沟通。祝你好运!

    这里需要注意的是,你的label的命名规则一定要有规则才行!~~因为只有这样才能进行动态的赋值。。当然还有一种方法,是通过反射进行赋值,也是OK的。

    加油!!

追问

饿,不好意思,是我问题写的不够清楚。我这个游戏是有4个难度的,每个难度只记录一个最高分,跟扫雷的排行榜有点差不多,可以的话,能加个QQ谈么。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-01
List<string> listLines = new List<string>();
using(StreamReader reader = new StreamReader ("your text file's path"))
{
    int i = 1;
    string line = reader.ReadLine();
    while(line!="" && line != nul)
    {
        if(i>=3)
        {
            listLines.Add(line);
        }
        line = reader.ReaderLine();
    }
    //循环完后,listLines 里面就放有第三行到第十行的数据了
}
for(int i = 0; i< listLines.Count ; i++)
{
    //listLines[i] 你想怎么处理就怎么处理咯
}

追问

我一共就4行数据啊,哪来第三行到第十行,麻烦给一段完整的代码好么。最好能把label的赋值代码写下

本回答被网友采纳
相似回答