2016-10-30 3 views
0

Ich habe ein Programm, das Textdateien lädt, um zwei separate Listenfelder im Formular zu füllen. Es soll jede Zeile lesen und jede Zeile zu einer einzelnen Listbox hinzufügen. Die erste Zeile der Textdatei wird aus irgendeinem Grund ignoriert, und ich bin mir nicht sicher warum.While-Schleife erkennt keine erste Zeile der Textdatei

Dies ist, was jede Zeile der Textdatei ist:

  • cd Rüstung 1 Echte +
  • bg Tool 2 Falsch +
  • o Weapon 3 FALSE-
  • xz Verbrauchs 1 True-

Ich glaube, meine While-Schleife ist das Problem, aber ich bin mir nicht sicher, was ich damit falsch mache. Ich brauche das Programm, um mehr als eine Zeile zu durchlaufen. Wenn ich den Code ausgeführt habe, ohne eine Schleife zu verwenden, wurde die erste Zeile der Textdatei ohne Probleme in das entsprechende Listenfeld eingefügt.

Der folgende Code ist an die Lade-Schaltfläche in meinem Formular angehängt.

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

Antwort

1

Du liest gerade erste Zeile vor while-Schleife in der Codezeile listItemString = openStream.ReadLine();. Dann überschreiben Sie diesen Wert in der ersten Schleifeniteration beim erstmaligen Aufruf von while ((listItemString = openStream.ReadLine()) != null).

löschen Nur 2 Zeilen Code befoer yout Schleife:

listItemString = openStream.ReadLine(); 
listItem = listItemString.Split(' '); 
Verwandte Themen