You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中删除ListView内文本文件行后无法保存更新问题

问题分析与解决方案

你当前的代码只完成了从ListView界面移除选中行的操作,但完全没处理文件的更新——这就是删除操作后文件内容还是老样子的核心原因。要解决这个问题,我们需要在删除ListView项之后,把更新后的列表重新写入到telefones.txt文件中。

这里是修改后的完整代码,我还加入了边界判断(避免未选中项时出错),同时优化了路径拼接的可靠性:

public void Deletar_lista() 
{
    // 先判断是否有选中项,防止索引越界异常
    if (listView1.SelectedIndices.Count == 0)
    {
        // 可选:提示用户选择要删除的行,比如 MessageBox.Show("请选择要删除的记录!");
        return;
    }

    // 安全拼接文件路径,比直接字符串+=更适配不同系统的路径规则
    string caminho = Path.Combine(Directory.GetCurrentDirectory(), "telefones.txt");

    // 1. 删除ListView中选中的行
    listView1.Items.RemoveAt(listView1.SelectedIndices[0]);

    // 2. 收集ListView中剩余的所有电话号码
    List<string> updatedNumbers = new List<string>();
    foreach (ListViewItem item in listView1.Items)
    {
        updatedNumbers.Add(item.Text);
    }

    // 3. 将更新后的列表写入文件,覆盖原内容
    File.WriteAllLines(caminho, updatedNumbers);
}

关键细节说明:

  • 边界判断:先检查SelectedIndices.Count,避免用户未选中任何行就点击删除按钮,导致IndexOutOfRangeException异常。
  • 路径优化:用Path.Combine替代手动字符串拼接,它会自动处理Windows/Linux不同的路径分隔符,减少路径错误概率。
  • 文件写入:File.WriteAllLines会一次性把所有行写入文件,自动覆盖原文件内容,刚好匹配这种“替换整个文件内容”的更新场景。

内容的提问来源于stack exchange,提问作者Mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:08:13