2016-10-30 8 views
0

私は、フォーム内の2つの別々のリストボックスに入力するテキストファイルを読み込むプログラムを持っています。すべての行を読み込み、各行を単一のリストボックスに追加することになっています。何らかの理由でテキストファイルの最初の行が無視されていて、なぜそれがわからないのですか。ループはテキストファイルの最初の行を検出しません

これは、テキストファイルの各行が何であるかである:武器3偽

  • XZ消耗品1真陽性
  • oを

    • CDアーマー1
    • +トゥルーBGツール2偽+

    私はwhileループが問題だと思っていますが、私が間違っていることがわかりません。私は、複数の行をループするプログラムが必要です。ループを使わずにコードを実行すると、問題のない適切なリストボックスにテキストファイルの最初の行が追加されました。

    以下のコードは、自分のフォーム内の読み込みボタンに添付されています。

     private void loadToolStripMenuItem_Click(object sender, EventArgs e) 
        { 
         OpenFileDialog openTextFile = new OpenFileDialog(); 
         openTextFile.Filter = "Text Files (*.txt) | *.txt"; 
    
         string listItemString; 
         string[] listItem; 
    
         if (openTextFile.ShowDialog() == DialogResult.OK) 
         { 
          using (StreamReader openStream = new StreamReader(openTextFile.OpenFile())) 
          { 
           listItemString = openStream.ReadLine(); 
           listItem = listItemString.Split(' '); 
    
           while ((listItemString = openStream.ReadLine()) != null) 
           { 
            if (listItemString.EndsWith("+")) 
            { 
             listItemString = listItemString.Replace("+", ""); 
             cart.Items.Add(listItemString); 
            } 
            else if (listItemString.EndsWith("-")) 
            { 
             listItemString = listItemString.Replace("-", ""); 
             delivery.Items.Add(listItemString); 
            } 
           } 
          } 
         } 
        } 
    

    答えて

    1

    コード行listItemString = openStream.ReadLine();の最初の行beforeループを読み取っています。最初のループ反復でこの値をオーバーライドすると、while ((listItemString = openStream.ReadLine()) != null)が初めて呼び出されます。

    だけyoutはループbefoerコードの2行を削除します。

    listItemString = openStream.ReadLine(); 
    listItem = listItemString.Split(' '); 
    
    関連する問題