如何在ListView中找到项目并更新同一行中的另一列?

时间:2012-11-01 18:09:34

标签: c# winforms listview

我的应用程序读取文本文件并填充ListView。这很简单,就像这样:

Date     | Invoice   | Status  
20121015 | 123123    |  
20121015 | 123124    | 
20121015 | 123456    |  
20121015 | 124123    |  

然后我需要阅读第二个文本文件,该文件可能包含也可能不包含在ListView中找到的发票以及状态。如果有匹配的发票,则需要将该第二个文本文件的状态添加到ListView,如下所示:

Date     | Invoice   | Status  
20121015 | 123123    |  
20121015 | 123124    | 
20121015 | 123456    | Paid 
20121015 | 124123    |  

最初我有一个只包含发票编号的ListBox,并且正在执行

int index = ListBox1.FindString(<whatever>);

获取包含发票的行的索引,然后删除项目(RemoveAt(Index))并插入新项目,如

ListBox.Items.Insert(index, invoice + " PAID")

如何使用ListView执行类似的操作?我喜欢有列而不只是1行文本的想法。我应该使用ListView以外的东西来完成这个吗?

平均而言,我正在阅读的每个文本文件都有<1000行需要添加。

1 个答案:

答案 0 :(得分:5)

您可以枚举列表视图的Items集合。是的listview是理想的控制。

foreach (ListViewItem item in listView1.Items)
{
    var invoice = item.SubItems[1];
    if (invoice.Text == "whatever")
    {
        item.SubItems[2] = new ListViewItem.ListViewSubItem() { Text = "Paid" };
        break;
    }
}