【问题标题】:Remove a selected index from text file从文本文件中删除选定的索引
【发布时间】:2012-11-30 18:02:39
【问题描述】:

我有一个显示文本文件行的列表框。我怎样才能做到这一点,以便我可以单击列表框中的项目并将其从列表框和文本文件中删除

   private void Read()
    {
        string filePath = @"//Filepath";

        List<String> listOfDels = viewlist.listDeliveries();

        using (var streamReader = new StreamReader(filePath, Encoding.Default))
        {
            while (!streamReader.EndOfStream)
            {
                listOfDels.Add(streamReader.ReadLine());
                listBox1.Items.Clear();

                listBox1.Items.AddRange(listOfDels.ToArray());
            }
        }
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    { //Remove line from txt file
    }

【问题讨论】:

  • 你为什么每次读一行都清除Items
  • 当我添加更多项目时更新它
  • 我认为你做错了什么。您正在向列表中添加数据,然后立即清除列表——很多很多次。将 Clear 和 AddRange 调用移到 while 循环之外。
  • 我知道这可能是“技术上”的错误,但它暂时有效。我只想知道如何通过选定的索引删除一行
  • 另外,您可以拨打File.ReadAllLines(filePath)

标签: c# selecteditem selectedindexchanged


【解决方案1】:
string tempFile = Path.GetTempFileName();

using(var sr = new StreamReader("file.txt"))
{
using(var sw = new StreamWriter(tempFile))
{
    string line;

    while((line = sr.ReadLine()) != null)
    {
         if(line != "removeme")
             sw.WriteLine(line);
    }
}
}

File.Delete("file.txt");
File.Move(tempFile, "file.txt");

【讨论】:

  • 这不会返回错误,但它也不会做任何事情:S
猜你喜欢
  • 2018-03-11
  • 2015-12-01
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多