从文件中读取文本并将其放入列表视图子项中

本文关键字:列表 视图 读取 文件 取文本 | 更新日期: 2023-09-27 18:36:44

我希望能够从文件中读取文本,并将其放入列表视图列中。文件中的文本将由"/"分隔,每个/表示文本何时连接下一列。我尝试过的一些事情是,

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());

这不起作用,因为它没有将其放入列表视图中。我尝试四处寻找其他想法,但没有任何效果。

完整代码是:

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());

            }
        }

多谢!

从文件中读取文本并将其放入列表视图子项中

你只需要将你的新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.