【问题标题】:How to save multiple listbox value into single textfile C#如何将多个列表框值保存到单个文本文件 C#
【发布时间】:2015-04-06 11:36:47
【问题描述】:

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

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

【问题讨论】:

  • 你需要的不是foreach,而是一个for循环。循环通过单个 for (var i =0;i&lt; lboitem.lenght;i++) 循环,然后从两个列表(如 var item = lboItem[i].value; var qty = lboqty[i].value; and then write the values to the file file2.Writeline("{0}|{1}", item, qty)`)中提取索引 i 处的项目。列表 1 中的元素应等于列表 2 中的元素
  • 我无法在列表框名称后插入length。你能通过编码回答吗?谢谢@Nilesh

标签: c# list foreach listbox text-files


【解决方案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 列表 - 但这取决于您的逻辑。

另请注意 - 此处检查列表框大小不相等的情况。如果您的列表框大小保证相等 - 此检查是多余的,您可以将此代码 sn-p 简化为

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

【讨论】:

  • 非常感谢!这也太完美了。谢谢@Andy Korneyev
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2021-05-18
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多