C#ListViewItems没有返回空

时间:2016-12-27 23:20:17

标签: c# winforms listviewitem

我正在使用这种方法并且它一直说listView1有项目,即使列表视图中没有出现?

        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为1” “如果所有”数据“都是空的?我已经尝试过其他方法来解决这个问题,在其他方法中使用自定义布尔值,但它只是不实用的回顾它们,我想做的就是如果listview1为0告诉用户没有数据。

1 个答案:

答案 0 :(得分:0)

您必须先在代码中初始化listview,以便在以下位置不会出现运行时错误:

listView1.Items.Add(lvi);

listview的实例化将创建一个空的listview,其计数为0,从而传递你的if声明。