删除streamreader的部分

时间:2010-04-21 08:09:46

标签: c#

我最终得到了以下数组中的所有交付

public static ArrayList myDeliveries = new ArrayList();

它被加载到listview中。我按如下方式选择一个项目:

iDeliverySelected = lstDeliveryDetails.SelectedItems[0].Index;

我很难理解如何选择项目并使用删除按钮将其从文本文件中删除?

4 个答案:

答案 0 :(得分:1)

有人可能有更智能的解决方案,但我认为在用户通过GUI进行更改后,您将不得不生成整个文本文件。

答案 1 :(得分:1)

这就是你删除所选项目的方法:

lstDeliveryDetails.Items.RemoveAt(iDeliverySelected);

答案 2 :(得分:0)

如果您需要将一组对象保存到磁盘,然后将其读回(并在对象更改时重复执行),我会说您需要查看serialization and deserialization

这基本上就是您已经手动完成的工作,但有一些方法可以自动化并使其更容易。

您可以使用XMLSerializer类来执行此操作,但如果Delivery对象尚未标记为saveFile(),则必须使用myDeliveries.RemoveAt(selectedIndex); //Or myDeliveries.Remove(selectedObject); 对象进行标记。

修改 :(发表评论并更新至问题)

如果在调用{{1}}之前,从ArrayList中删除了所选项,它将在没有该项的情况下保存:

{{1}}

答案 3 :(得分:0)

您尚未展示如何填充myDeliveries或lstDeliveryDetails,因此我将做出一些假设。从lstDeliveryDetails中删除项目时,还需要使用Remove方法从myDeliveries中删除相同的项目。完成对列表的更改后,使用StreamWriter将其保留为文件:

using (StreamWriter sw = new StreamWriter("../../MealDeliveries.txt"))  
{  
    foreach (object obj in myDeliveries)
    {
        sw.WriteLine(((Delivery)obj).DeliveryName);
        // etc
    }  
}

如果你使用List集合而不是ArrayList,你也不需要转换为(Delivery),你可以只做“foreach(在myDeliveries中交付交付)”。