2015-04-06 81 views
1

我现在所拥有的是两个列表框,分别是lstItem和lstQty,我希望将这两个值保存到单个文本文件中。如何将多个列表框值保存到单个文本文件中C#

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

你需要的不是一个'foreach',而是一个for循环。循环遍历一个单独的'for(var i = 0; i Nilesh 2015-04-06 11:46:18

+0

我不能插入'length'列表框名称后。你能通过编码来回答吗?谢谢@Nilesh – 2015-04-06 11:51:14

回答

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名单 - 但它是由你的逻辑。

另请注意 - 这里检查的情况下,当列表框的大小不相等。如果你的列表框大小guarantied等于 - 这种检查是多余的,你可以简化这个代码片段

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

非常感谢!这太完美了。谢谢@Andy Korneyev – 2015-04-06 12:01:47

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循环中。

相关问题