如何从两个列表框中保存文件c#

时间:2013-11-11 06:10:54

标签: c# text listbox save streamwriter

我正在做一个项目。在项目中,我需要将值添加到列表框中。当我按下添加按钮时:

 lbxOverhead.Items.Add(tbxAddItem.Text);
 lbxItemPrices.Items.Add(tbxAddPrice.Text);

然后我使用以下代码将修改后的列表框值保存到txt文件中:

using (StreamWriter outputFile = new StreamWriter("List.txt"))
        {
            foreach (string item in lbxOverhead.Items)
            foreach (int item2 in lbxItemPrices.Items)
            {
                outputFile.WriteLine(item);
                outputFile.WriteLine(item2);
            }

它出现了一条错误消息:error message

你能帮帮我吗?

3 个答案:

答案 0 :(得分:1)

根据我的理解,您的代码会从for循环中断。你能不能像下面那样改变你的片段。

using (StreamWriter outputFile = new StreamWriter("List.txt"))
{
   foreach (var item in lbxOverhead.Items)
   foreach (var item2 in lbxItemPrices.Items)
   {
      outputFile.WriteLine(item);
      outputFile.WriteLine(item2);
   }

答案 1 :(得分:1)

您正在向string投射int而该广告失败

using (StreamWriter outputFile = new StreamWriter("List.txt"))
{
 foreach (string item in lbxOverhead.Items)
 foreach (string item2 in lbxItemPrices.Items)
 {
   outputFile.WriteLine(item);
   outputFile.WriteLine(item2);
 }

当您将其添加到项目列表中时,您要添加.Text这是一个字符串。然后你试图施放它并且它失败了。

此外,您可能需要重新考虑代码的结构。嵌套循环几乎不是一件好事,而且效率非常低。

答案 2 :(得分:0)

失败原因:1。您试图将lbxItemPrices.Items的返回对象存储在int变量中,而不进行任何明确的转换 - 这是无效的下面:

foreach (int item2 in lbxItemPrices.Items)

2.在这里使用2个foreach循环不是好习惯,我认为这会产生其他问题。

此处我只在ItemPrice次和Overhead次数相同时才添加项目

代码如下:

    using (StreamWriter outputFile = new StreamWriter("List.txt"))
    {
        if(lbxOverhead.Items.Count == lbxItemPrices.Items.Count)
        {
          for(int i=0;i<lbxOverhead.Items.Count;i++)       
          {         
            outputFile.WriteLine(lbxOverhead.Items[i].ToString());
            outputFile.WriteLine(lbxItemPrices.Items[i].ToString());
          }
        }
    }