我现在拥有的是两个列表框,它们是lstItem和lstQty,我想将这两个值保存到单个文本文件中。
lstItem | lstQty
Chicken | 3
Fish | 2
Lamb | 1
我希望将此值保存到文本文件中,如下所示:
Chicken | 3
Fish | 2
Lamb | 1
而不是:
Chicken
Fish
Lamb
3
2
1
这些是我的代码:
string receiptFile = @"D:\VisualStudio2012\SalesDetails.txt";
StreamWriter file2 = new StreamWriter(receiptFile, true);
List<string> totalSales = new List<string>();
foreach (object item in lboItem.Items)
{
totalSales.Add(item as string);
file2.WriteLine(item);
}
foreach (object item2 in lboQty.Items)
{
totalSales.Add(item2 as string);
file2.WriteLine(item2);
}
file2.Close();
我知道为什么它在文本文件中显示就像我上面提到的那样。它发生的原因是我不知道如何让它像我想要的那样。提前感谢任何可以解决此问题的人。
答案 0 :(得分:1)
好吧,你不需要两个循环,而只需要一个循环,在这一个循环中你只需要连接两个列表框中的值并将它们写入文件。
这样的事情:
int itemsCount = Math.Min(lboItem.Items.Count, lboQty.Items.Count);
for (int i = 0; i < itemsCount; i++)
{
string item = "";
if (i < lboItem.Items.Count)
item = lboItem.Items[i].ToString();
item += " | ";
if (i < lboQty.Items.Count)
item += lboQty.Items[i].ToString();
totalSales.Add(item);
file2.WriteLine(item);
}
我不确定你为什么需要totalSales
列表 - 但这取决于你的逻辑。
另请注意 - 此处列出了列表框大小不相等的情况。如果您的列表框大小保证相同 - 此检查是多余的,您可以将此代码段简化为
int itemsCount = lboItem.Items.Count;
for (int i = 0; i < itemsCount; i++)
{
string item = string.Format("{0} | {1}", lboItem.Items[i], lboQty.Items[i]);
totalSales.Add(item);
file2.WriteLine(item);
}
答案 1 :(得分:1)
如果两个列表框始终具有相同数量的项目,这可能会对您有所帮助:
string receiptFile = @"D:\VisualStudio2012\SalesDetails.txt";
StreamWriter file2 = new StreamWriter(receiptFile, true);
for(int i=0; i < lboItem.Items.Count; i++)
{
file2.WriteLine(string.Format("{0} | {1}", lboItem.Items[i].ToString(), lboQty.Items[i].ToString()));
}
file2.Close();
我没有意识到totalSales
的目的。如果需要,可以在for循环中添加它。