我有一个程序加载文本文件以填充表单中的两个单独的列表框。它应该读取每一行,并将每一行添加到单个列表框中。由于某种原因,文本文件的第一行被忽略,我不确定原因。
这是文本文件的每一行:
我相信我的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);
}
}
}
}
}
答案 0 :(得分:1)
您正在代码行listItemString = openStream.ReadLine();
中的while循环前读取第一行。然后,在第一次调用while ((listItemString = openStream.ReadLine()) != null)
时,在第一次循环迭代中重写此值。
只需删除2行代码befoer yout loop:
listItemString = openStream.ReadLine();
listItem = listItemString.Split(' ');