我有一个程序加载文本文件,以填充表单中的两个单独的列表框 . 它应该读取每一行,并将每一行添加到单个列表框中 . 由于某种原因,文本文件的第一行被忽略,我不知道为什么 .
这是文本文件的每一行:
-
cd护甲1真
-
bg工具2错误
-
o武器3假 -
-
xz耗材1真 -
我相信我的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();
中while循环前的第一行 . 然后,在第一次调用while ((listItemString = openStream.ReadLine()) != null)
时,在第一次循环迭代中重写此值 .只需删除2行代码befoer yout loop: