我最终得到了以下数组中的所有交付
public static ArrayList myDeliveries = new ArrayList();
它被加载到listview中。我按如下方式选择一个项目:
iDeliverySelected = lstDeliveryDetails.SelectedItems[0].Index;
我很难理解如何选择项目并使用删除按钮将其从文本文件中删除?
答案 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中交付交付)”。