加载制表符分隔的文本文件并将其显示在listview c#中

时间:2013-06-11 05:41:37

标签: c# listview text-files filestream windows-forms-designer

在VS2010中,c#windows形式。我正在尝试加载并显示(读取)当前在我的bin \ Debug文件夹中的文本文件(“booklist.txt”),它是制表符分隔的,进入多列列表视图。我尝试了一个foreach循环foreach(在arrayname中的字符串ya),它似乎填充了一些东西,因为listview扩展但没有显示任何东西并冻结了程序。编辑:正确添加,我得到文本中的第一条记录来填充LV,但没有其他人。记录由新行分隔,并且用于分隔不同字段/信息的制表符以进入每一列。

    static FileStream textFile = new FileStream("booklist.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
    StreamReader reader = new StreamReader(textFile);
    string[] booksTextArray;
    private void LoadButton_Click(object sender, EventArgs e)
    {
        // loads text file with existing book catalog
        string recordIn = reader.ReadLine();
        booksTextArray = recordIn.Split('\t');
        for (int i = 0; i < booksTextArray.Length; i++)
        {
            listView1.Items.Add(booksTextArray[i]);
        }
    }

1 个答案:

答案 0 :(得分:1)

以下是您可以使用的一般算法:

//Holders.
string line = "";
string[] items;
ListViewItem listItem;

//While there are lines to read.
while((line = reader.ReadLine()) != null)
{
    items = line.Split('\t') //Split the line.
    listItem = new ListViewItem(); //"Row" object.

        //For each item in the line.
        for (int i = 0; i < items.Length; i++)
        {
            if(i == 0)
            {
                listItem.Text = items[i]; //First item is not a "subitem".
            }
            else
            {
                listItem.SubItems.Add(items[i]); //Add it to the "Row" object.
            }
        }

    listView1.Items.Add(listItem); //Add the row object to the listview.
}