C#Listview文本导入函数不执行任何操作

C#Listview文本导入函数不执行任何操作,c#,winforms,listview,streamreader,C#,Winforms,Listview,Streamreader,我正在尝试将.txt文件内容导入我的listview,文本文件已保存为此结构中的多行:“行ID”^“字符串” 我使用此代码导入数据: openFileDialog1.Filter = "Text Files (*.txt)|*.txt"; openFileDialog1.Title = "Open Text file"; DialogResult result = openFileDialog1.ShowDialog(); if (result =

我正在尝试将.txt文件内容导入我的listview,文本文件已保存为此结构中的多行:“行ID”^“字符串” 我使用此代码导入数据:

openFileDialog1.Filter = "Text Files (*.txt)|*.txt";
        openFileDialog1.Title = "Open Text file";
        DialogResult result = openFileDialog1.ShowDialog();
        if (result == DialogResult.Cancel)
            return;
        StreamReader sr = new StreamReader(openFileDialog1.FileName, Encoding.UTF8);
        while (sr.Peek() >= 0)
        {
            string[] a2 = sr.ReadLine().Split('^');
            if (a2.Length == 3)
            {
                int aa = int.Parse(a2[0].ToString());

                textView.Items[aa].SubItems[1].Text = a2[1];
            }
        }
        sr.Close();

它加载OFD,选择txt文件,然后什么都不做,它没有给出任何异常/错误,它只是什么都不做,我的代码有什么问题吗?

您正在拆分行,然后测试生成的数组中是否有3个元素

if (a2.Length == 3)
如果每一行实际上只有两部分-LineId和string,那么您应该测试两个数组元素:

if (a2.Length == 2)
代码似乎不起任何作用,因为If根据您的数据计算为false

此外,该行:

textView.Items[aa].SubItems[1].Text = a2[1];

依赖于已创建索引为aa的项。您应该首先创建项目并将其添加到列表视图中。

您正在拆分行,然后测试生成的数组中是否有3个元素

if (a2.Length == 3)
如果每一行实际上只有两部分-LineId和string,那么您应该测试两个数组元素:

if (a2.Length == 2)
代码似乎不起任何作用,因为If根据您的数据计算为false

此外,该行:

textView.Items[aa].SubItems[1].Text = a2[1];

依赖于已创建索引为aa的项。您应该先创建项目并将其添加到列表视图中。

设置一个断点,确保它落在while循环中。我认为您的代码中有输入错误。在声明之前使用a2;我希望它应该是a1.Length==3。您正在使用字符串[]a1作为数组,但稍后您将引用尚未声明/启动的a2。看起来像一个bug。我对断点很陌生,所以事先很抱歉,我在while行上放了一个断点,当我单击导入并选择文件时,它在红色BP圆圈上给了我一个黄色箭头,如果可以,我该怎么办?也更正了代码,但仍然是相同的结果。你可以发布一个文本文件的两行的实际示例吗?放一个断点,确保它落在while循环中。我认为你的代码中有一个输入错误。在声明之前使用a2;我希望它应该是a1.Length==3。您正在使用字符串[]a1作为数组,但稍后您将引用尚未声明/启动的a2。看起来像一个bug。我对断点很陌生,所以事先很抱歉,我在while行上放了一个断点,当我单击导入并选择文件时,它在红色BP圆圈上给了我一个黄色箭头,如果可以,我该怎么办?还更正了代码,但结果仍然相同您可以发布文本文件几行的实际示例吗?导入实际上是一个替换,它替换了已有的数据,并且在该行“textView.Items[aa].Subitems[1].text=a2[1]上给我一个超出范围的异常)尝试了相同的结果,我认为超出范围的是项[aa],我修复了它,我只是想把aa-1导入实际上是一个替换,它替换了现有的数据,它还给了我一个超出范围的异常,在那一行“textView.items[aa]。子项[1]。Text=a2[1])尝试了相同的结果,我认为超出范围的是物品[aa],我修正了它,我只是把aa-1放进去