C# 当listview控件中有默认值时,如何对齐listview列中的csv文件值

C# 当listview控件中有默认值时,如何对齐listview列中的csv文件值,c#,C#,因此,当我将csv文件导入listview控件时,我的对齐有问题 这就是问题所在: listview控件中的default值是Mark和Joe。 当我上传csv文件时,它会从第一列开始在下一行插入值 正确的输出需要如下所示: csv值需要与默认值Mark和Joe对齐 注意:我的虚拟csv文件中的值为: 建筑署,1234 dfg,1234 这是我到目前为止构建的代码 OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDia

因此,当我将csv文件导入listview控件时,我的对齐有问题

这就是问题所在:

listview控件中的default值是Mark和Joe。 当我上传csv文件时,它会从第一列开始在下一行插入值

正确的输出需要如下所示:

csv值需要与默认值Mark和Joe对齐

注意:我的虚拟csv文件中的值为:

建筑署,1234

dfg,1234

这是我到目前为止构建的代码

OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    if (MessageBox.Show("Are you sure you want to import the data from \n " + openFileDialog1.FileName + "?", "Are you sure?", MessageBoxButtons.YesNo) == DialogResult.Yes)
    {
        filename = openFileDialog1.FileName;
        StreamReader sr = new StreamReader(filename);
        string csv = File.ReadAllText(openFileDialog1.FileName);

        sr.Close();                 

        var lines = File.ReadAllLines(filename);
        foreach (string line in lines)
        {
            var parts = line.Split(',');
            ListViewItem lvi = new ListViewItem(parts[0]);
            lvi.SubItems.Add(parts[1]);
            listView1.Items.Add(lvi);
        }
    }
    else
    {
    }
}

感谢那些愿意帮助我解决简单问题的专家

您确实需要修改现有项而不是添加新项,一个选项可以是跟踪索引并使用该索引获取项并将子项添加到该ListViewItem


注意:您应该在索引周围添加一些错误检查,或者如果csv包含的行数比ListViewItems多,则可能会出现IndexOutOfRangeException,您可以只获取默认行数并添加额外的子项,而不是创建新的ListViewItem。我也是这么想的,但我有点不知所措,不知道该怎么做。谢谢你的解释。我按照您的指示添加了一个错误检查代码。再次感谢。
int index = 0;
var lines = File.ReadAllLines("");
foreach (string line in lines)
{
    var parts = line.Split(',');
    // TODO: check if the item at index exists first
    var existingItem = listView1.Items[index]; 
    existingItem.SubItems.Add(parts[0]);
    existingItem.SubItems.Add(parts[1]);
    index++;
}