如何将多个列表框值保存到单个文本文件 C#

How to save multiple listbox value into single textfile C#

我现在有两个列表框,它们是 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();

我知道为什么它会像我上面提到的那样显示在文本文件中。它发生是因为我不知道如何让它像我想要的那样。预先感谢任何可以解决此问题的人。

好吧,你只需要一个循环而不是你的两个循环,在这个循环中你只需要连接两个列表框的值并将它们写入文件。

像这样:

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

如果两个列表框总是有相同数量的项目,也许这对你有帮助:

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