上传.txt文件(C#)后listview中的大量差距

时间:2015-03-31 20:37:06

标签: c# listview listviewitem

我还是太新了,无法显示我的listview的样子,但这里是代码:

    private void openClientFileToolStripMenuItem_Click(object sender, EventArgs e)
    {
        try
        {
            OpenFileDialog OF = new OpenFileDialog();
            OF.ShowDialog(this);
            OF.InitialDirectory = "C:\\";
            OF.RestoreDirectory = true;
            string file = OF.FileName;


            System.IO.StreamReader sr = new System.IO.StreamReader(file);

            listView1.Items.Clear();

           foreach(string line in File.ReadLines(file))
           {
               ListViewItem lvi = new ListViewItem();

                   lvi.Text = sr.ReadLine(); 

                   lvi.SubItems.Add(sr.ReadLine());
                   lvi.SubItems.Add(sr.ReadLine());
                   lvi.SubItems.Add(sr.ReadLine());
                   lvi.SubItems.Add(sr.ReadLine());
                   lvi.SubItems.Add(sr.ReadLine());
                   lvi.SubItems.Add(sr.ReadLine());
                   lvi.SubItems.Add(sr.ReadLine());
                   listView1.Items.Add(lvi);
           }
           sr.Dispose();
        }
                catch(Exception ex)
        {
            MessageBox.Show(ex.Message, "Error");
        }
    }

所以这就是问题所在,我上传了文件,它将我的项目准确地放在应该去的地方......除了从列表视图开头的7行以外,我不知道为什么。

然而......如果我注释掉了

的代码行
    lvi.Text = sr.ReadLine();

巨大的差距已经消失,但第一栏完全被跳过,这也无法奏效。我做错了什么?

(此外,我尝试加载到listview中的.txt文件中没有任何空白。)

1 个答案:

答案 0 :(得分:0)

我不太清楚你为什么要同时使用File.ReadLine和StreamReader.ReadLine。但这是导致错误的原因。你可以这样做来纠正它。

string[] lines = File.ReadAllLines("");
for(int i = 0; i < lines.Length; i= i + 8)
       {
           ListViewItem lvi = new ListViewItem();

               lvi.Text = line[i]; 

               lvi.SubItems.Add(line[i+1]);
               lvi.SubItems.Add(line[i+2]);
               lvi.SubItems.Add(line[i+3]);
               lvi.SubItems.Add(line[i+4]);
               lvi.SubItems.Add(line[i+5]);
               lvi.SubItems.Add(line[i+6]);
               lvi.SubItems.Add(line[i+7]);
               listView1.Items.Add(lvi);
       }

你需要进行错误处理才能证明这一点。