0

VS2010 では、c# Windows フォーム。現在bin\Debugフォルダーにあるテキストファイル(「booklist.txt」)を読み込んで表示(読み取り)しようとしています。これはタブで区切られており、複数列のリストビューになっています。foreach ループ foreach(string ya in arrayname) を試しましたが、リストビューが展開されたときに何かが入力されたように見えましたが、何も表示されず、プログラムがフリーズしました。編集: 適切に追加すると、テキスト内の最初のレコードを取得して 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]);
        }
    }
4

1 に答える 1

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.
}
于 2013-06-11T06:24:38.207 に答える