2016-12-27 77 views
0

我使用这种方法,它一直说listView1有项目,即使没有出现在列表视图中?C#ListViewItems没有返回空

 private void button8_Click(object sender, EventArgs e) 
    { 
     string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test.txt"; 
     if (Directory.Exists(filePath)) 
     { 
      listView1.Items.Clear(); 

      using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) 
      { 
       using (TextReader sr = new StreamReader(fs)) 
       { 
        string line; 
        while ((line = sr.ReadLine()) != null) 
        { 
         string[] data = line.Split(new char[] { ',' }); 
         ListViewItem lvi = new ListViewItem(); 

         if (listView1.Items.Count > 0) 
         { 
          MessageBox.Show("ListViewCount#1: '" + listView1.Items.Count + "'."); 
         } 

         lvi.Text = data[0]; 
         lvi.SubItems.Add(data[1]); 
         lvi.SubItems.Add(data[3]); 
         lvi.SubItems.Add(data[4]); 
         lvi.Tag = data[2]; 

         listView1.Items.Add(lvi); 

         if (listView1.Items.Count > 0) 
         { 
          MessageBox.Show("ListViewCount#2: '" + listView1.Items.Count + "'."); 
         } 
        } 
       } 
      } 
      if (listView1.Items.Count == 0) 
      { 
       MessageBox.Show("ERROR: ListView has no data to show."); 
       return; 
      } 
     } 
    } 

的listView1.count的“LVI”部分之后是大于0,在这之前它是空的(与消息框该方法之前和之后的计数ListView1的测试),它为什么说它具有“ListView1的.count of 1“如果所有的”数据“都是空的?我尝试了其他方法来解决这个问题,在其他方法中使用自定义布尔值,但它只是不切实际的向他们提及,我想要做的就是如果listview1为0,告诉用户没有数据。

+0

“StreamReader”的输入是什么?有可能输入文件只有换行符? –

+0

您能否添加缺失代码? 'listView1'在哪里实例化? – kat1330

+0

目前还不清楚你在问什么。此外,这样的问题需要[MCVE] –

回答

0

您必须初始化之前在代码的ListView所以作为不得到一个运行时错误:

listView1.Items.Add(lvi); 

列表视图的实例化将创建一个空的ListView为0的计数从而使您若宣言。