【问题标题】:updating csv file automatically in listview c++/cli在 listview c++/cli 中自动更新 csv 文件
【发布时间】:2015-08-16 11:26:52
【问题描述】:

我在 VS2010 c++/cli 中创建了一个列表视图,然后所有项目都保存在 *.csv 文件中。 通过右键单击将从列表视图中删除项目的项目,我在列表视图中做了更多工作。

private: System::Void removeFromListToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^  e) {
    listView1->Items->Remove(listView1->SelectedItems[0]);
}

它可以从列表视图中删除,但我不知道如何保存修改后的列表视图。 有没有人能想到的办法?

【问题讨论】:

    标签: listview csv c++-cli


    【解决方案1】:

    您可以做的是在每次删除或添加项目时遍历列表视图中的项目。我建议为此编写一个函数,这样您就可以更频繁地调用它,而不必总是再次编写代码:

    void WriteItemsToCsv(){
        StreamWriter^ CsvWriter = gcnew StreamWriter(/* Path to your .csv file */);
        for each(ListViewItem^ li in listView1->Items)
            CsvWriter->WriteLine(li->Text + ",");
    
        CsvWriter->Close();
    }
    

    这样,每次调用WriteItemsToCsv() 时,它都会将listView1 的所有名称写入指定的文件中。记得在 CsvWriter 的声明处插入文件的路径。

    编辑 我的错,.csv 中的分离不是;但 , 。在代码示例中编辑。

    EDIT 2 DataGridView 解决方案

    1. 在设计器中将 DataGridView 添加到表单中。
    2. 在设计器中将 DataSet 添加到表单中。
    3. 在 DataGridView 的“DataSource”属性中选择您的 DataSet。
    4. 现在,您可以在 DataSet 中创建代表您的人员的表。
    5. 单击您的数据集,然后单击属性“表”旁边的浏览器符号。
    6. 您可以在此处添加具有所有必要属性的表。然后它应该如下所示:

    在您的代码中,现在您可以使用DataSet->ReadXml("test.xml"); 读取数据,然后将数据写入xml,如DataSet->WriteXml("test.xml");

    告诉我这是否适合你;)

    【讨论】:

    • 非常感谢您的回答。它仅适用于列表视图的第一列。能否请您告诉我如何将其扩展为subitems,以及
    • @Royeh 好吧,现在有点困难,因为如果它是子项或根,您需要一个标识符。在 .csv 中,您只会保存项目的名称。
    • 对,我的问题是我有一个 7 列的 listview,然后我需要更新所有列,而不仅仅是第一列。
    • @Royeh 我不明白你在做什么。您使用的是哪种列表视图?您可以编辑您的问题并提供图片。
    • 我添加了我的listview窗口的图片
    猜你喜欢
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多