从文件中读取文本并将其放入listview子项目中?

时间:2013-10-24 21:26:47

标签: c# listview

我希望能够从文件中读取文本,并将其放入listviews列。 文件中的文本将以“/”分隔,每个/表示文本将加入下一列。 我尝试过的一些事情是,

ListViewItem lv = new ListViewItem();
                lv.Text = fileContent[0].ToString();
                lv.SubItems.Add(fileContent[1].ToString());
                lv.SubItems.Add(fileContent[2].ToString());
                lv.SubItems.Add(fileContent[3].ToString());

没有用,因为它没有把它放到listview中。我试图寻找其他想法,但没有任何效果。

完整的代码是:

private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {

                string fileToOpen = ofd.FileName;

                System.IO.StreamReader sr = new System.IO.StreamReader(fileToOpen);
                string fileContent = sr.ReadToEnd();
                string[] fileItems = fileContent.Split('/');
                sr.Dispose();

                ListViewItem lv = new ListViewItem();
                lv.Text = fileContent[0].ToString();
                lv.SubItems.Add(fileContent[1].ToString());
                lv.SubItems.Add(fileContent[2].ToString());
                lv.SubItems.Add(fileContent[3].ToString());



            }
        }

非常感谢!

1 个答案:

答案 0 :(得分:1)

您只需将新的ListViewItem添加到ListView ..此刻您还没有这样做。你正在做的是创建一个独立的ListViewItem ..它只是坐在记忆中。

所以,经过以下几行:

ListViewItem lv = new ListViewItem();
lv.Text = fileContent[0].ToString();
lv.SubItems.Add(fileContent[1].ToString());
lv.SubItems.Add(fileContent[2].ToString());
lv.SubItems.Add(fileContent[3].ToString());

这样做:

yourListView.Items.Add(lv); // add the listviewitem to the listview

修改

错误拆分的原因是因为您使用fileContent来添加项目。 fileContent是文件的全部内容..这不是你想要的。当您在字符串[]上使用索引器方法时,您正在访问单个字符。

将您的代码更改为:

ListViewItem lv = new ListViewItem();
lv.Text = fileItems[0].ToString(); // Use fileItems.. its the result of the split.
lv.SubItems.Add(fileItems[1].ToString()); // Use fileItems.. its the result of the split.
lv.SubItems.Add(fileItems[2].ToString()); // Use fileItems.. its the result of the split.
lv.SubItems.Add(fileItems[3].ToString()); // Use fileItems.. its the result of the split.