我用txt存储数据,显示在listview里.分为行和列.  然后第一列是ID.当我在软件里右击listview里的某一行执行删除,在txt里删除那行的数据我可以实现了.但是从那行开始往下的所有行的首项,就是ID的值都要减去1.这个该怎么办呢??
要方法和代码..    

解决方案 »

  1.   

    //读取文本所有内容,修改后重新写入文本。
    string[] lines = File.ReadAllLines("文件");
    //假如修改的第3行为5
    lines[2] = Regex.Replace(lines[2],"^\S+","5");
    //以下的都要修改-1.
    for(int i=3;i<lines.Length;i++)
    {
        lines[i] = lines[2] = Regex.Replace(lines[i],"^\d+",delegate(Match m){return (int.Parse(m.Value)-1).ToString();});
    }
    File.WriteAllLines("文件",lines);
      

  2.   

    把所有 内容都读到listview中,复杂时设计 个数据结构。
    保存时不要考虑原txt文本了,重新生成个文本,开销基本上是没有区别的。
      

  3.   

    就是想删除一行,然后下面每行的id都得随之修改.倒序循环我也 解决不了修改id值的问题..
      

  4.   


                int t;
                t = Convert.ToInt32(listView3.SelectedItems[0].SubItems[0].Text);
     FileStream stFilePath = new FileStream(Application.StartupPath.Trim() + "\\Data.txt", FileMode.Create, FileAccess.Write);            StreamWriter sw = new StreamWriter(stFilePath);
                for (int i = 0; i < listView3.Items.Count; i++)
                {
                    for (int j = 0; j < listView3.Items[i].SubItems.Count; j++)
                    {
                        if (i < t - 1)
                        {
                   
                            string _strTemp = listView3.Items[i].SubItems[j].Text;
                            sw.Write(_strTemp);
                            //插入"<----->"作为分隔符,可以任取
                            sw.Write("<----->");
                        }
                        if (i > t - 1)
                        {
                            if (j == 0)
                            {
                                string _strTemp = (Convert.ToInt32(listView3.Items[i].SubItems[j].Text) - 1).ToString();
                                sw.Write(_strTemp);
                                //插入"<----->"作为分隔符,可以任取
                                sw.Write("<----->");
                            }
                            else
                            {
                                string _strTemp = listView3.Items[i].SubItems[j].Text;
                                sw.Write(_strTemp);
                                //插入"<----->"作为分隔符,可以任取
                                sw.Write("<----->");
                            }
                        }
                    }
                    if (i != t - 1)
                    {
                        sw.WriteLine();
                    }
                }
                sw.Flush();
                sw.Close();  //我这样实现了...嘿嘿..