如何从列表视图和文本文件中删除项目和子项目

时间:2012-02-11 01:03:52

标签: c# listview

我目前的代码是将文本从两个文本框保存到文本文件并将其加载到列表视图中。如果我按下一个按钮,我将如何从列表视图中删除项目,但是从文本文件中删除它,以便下次打开程序时不会加载它?

我目前的保存代码是

    private void btnAddxuid_Click(object sender, EventArgs e)
    {
        try
        {
            ListViewItem lvi = new ListViewItem();
            lvi.Text = txtxuidGamertag.Text;
            lvi.SubItems.Add(txtXuid.Text);
            listXuid.Items.Add(lvi);
            TextWriter xuids = new StreamWriter(xuidspath, true);
            xuids.WriteLine(txtxuidGamertag.Text + "-" + txtXuid.Text);
            txtXuid.Clear();
            txtxuidGamertag.Clear();
            xuids.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

2 个答案:

答案 0 :(得分:0)

简单的解决方案(无需重新设计整体方法)就是简单地附加到OnClick甚至是删除按钮。然后处理程序将决定要删除哪个项目(我将假设“已选择”项目),删除它然后使用列表视图的当前内容写入文件。

示例(注意,这是伪代码)

OnRemoveButtonClickHandler()
{
    listXuid.Items.Remove(listXuid.SelectedItem);

    // open the file for overwriting
    foreach (var item in listXuid.Items)
    {
        // write out each item in your format
    }
}

通常,您应该尝试将应用程序中的“数据和逻辑”远离用户界面。在这种情况下,这意味着为列表中的元素编写模型类,将列表项源绑定到这些项的集合,然后在需要时处理后备文件源(即,在启动时加载数据结构并写入它只在你需要的时候)。演示文稿将由某种数据模板处理。

如果您有兴趣,请查看WPF和MVVM。

答案 1 :(得分:0)

最好的办法是仅在退出程序时或程序抛出未处理的异常时,在文本文件中保存并重写所有项目。因此,每次单击删除或添加按钮时都不需要访问该文件。希望你明白这一点......